diff --git a/main/inc/lib/pear/HTML/QuickForm/Rule/Required.php b/main/inc/lib/pear/HTML/QuickForm/Rule/Required.php
index 727a44b712..7f36749690 100755
--- a/main/inc/lib/pear/HTML/QuickForm/Rule/Required.php
+++ b/main/inc/lib/pear/HTML/QuickForm/Rule/Required.php
@@ -1,6 +1,6 @@
-
+class HTML_QuickForm_Rule_Required extends HTML_QuickForm_Rule
+{
+ /**
+ * Checks if an element is empty
+ *
+ * @param string $value Value to check
+ * @param mixed $options Not used yet
+ * @access public
+ * @return boolean true if value is not empty
+ */
+ function validate($value, $options = null)
+ {
+ // It seems this is a file.
+ if (is_array($value)) {
+ if (isset($value['name']) &&
+ isset($value['type']) &&
+ isset($value['tmp_name']) &&
+ isset($value['size']) &&
+ isset($value['error'])
+ ){
+ if (empty($value['tmp_name'])) {
+ return false;
+ }
+ }
+ } else {
+ if ((string)$value == '') {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ function getValidationScript($options = null)
+ {
+ return array('', "{jsVar} == ''");
+ }
+}
diff --git a/main/work/upload.php b/main/work/upload.php
index 0e9beb401f..2bea5dee30 100644
--- a/main/work/upload.php
+++ b/main/work/upload.php
@@ -77,7 +77,7 @@ $interbreadcrumb[] = array('url' => api_get_path(WEB_CODE_PATH).'work/work_list.
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('UploadADocument'));
$form = new FormValidator('form', 'POST', api_get_self()."?".api_get_cidreq()."&id=".$work_id, '', array('enctype' => "multipart/form-data"));
-setWorkUploadForm($form);
+setWorkUploadForm($form, $workInfo['allow_text_assignment']);
$form->addElement('hidden', 'id', $work_id);
$form->addElement('hidden', 'sec_token', $token);
@@ -85,6 +85,7 @@ $error_message = null;
$succeed = false;
if ($form->validate()) {
+
if ($student_can_edit_in_session && $check) {
$values = $form->getSubmitValues();
// Process work
diff --git a/main/work/upload_from_template.php b/main/work/upload_from_template.php
index a219385d15..28de435ad0 100644
--- a/main/work/upload_from_template.php
+++ b/main/work/upload_from_template.php
@@ -62,7 +62,7 @@ $interbreadcrumb[] = array('url' => api_get_path(WEB_CODE_PATH).'work/work_list.
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('UploadFromTemplate'));
$form = new FormValidator('form', 'POST', api_get_self()."?".api_get_cidreq()."&id=".$work_id, '', array('enctype' => "multipart/form-data"));
-setWorkUploadForm($form, false);
+setWorkUploadForm($form, $workInfo['allow_text_assignment']);
$form->addElement('hidden', 'document_id', $documentId);
$form->addElement('hidden', 'id', $work_id);
$form->addElement('hidden', 'sec_token', $token);
diff --git a/main/work/work.lib.php b/main/work/work.lib.php
index fb7320c8e3..c9a3b0636c 100644
--- a/main/work/work.lib.php
+++ b/main/work/work.lib.php
@@ -120,6 +120,7 @@ function settingsForm($defaults)
$form->addGroup($group, '', get_lang('StudentAllowedToDeleteOwnPublication'));
$form->addElement('button', 'submit', get_lang('Save'));
$form->setDefaults($defaults);
+
return $form->return_form();
}
@@ -214,7 +215,7 @@ function get_work_data_by_id($id)
$id = intval($id);
$course_id = api_get_course_int_id();
$work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
- $sql = "SELECT * FROM $work_table WHERE id = $id AND c_id = $course_id";
+ $sql = "SELECT * FROM $work_table WHERE id = $id AND c_id = $course_id";
$result = Database::query($sql);
$work = array();
if (Database::num_rows($result)) {
@@ -558,7 +559,8 @@ function display_student_publications_list($id, $my_folder_data, $work_parents,
// form edit directory
if (!empty($row['has_properties'])) {
- $sql = Database::query('SELECT * FROM '.$work_assigment.' WHERE c_id = '.$course_id.' AND id = "'.$row['has_properties'].'" LIMIT 1');
+ $sql = Database::query('SELECT * FROM '.$work_assigment.'
+ WHERE c_id = '.$course_id.' AND id = "'.$row['has_properties'].'" LIMIT 1');
$homework = Database::fetch_array($sql);
}
// save original value for later
@@ -3023,20 +3025,37 @@ function getWorkDateValidationStatus($homework) {
/**
* @param FormValidator $form
- * @param bool $uploadFile
+ * @param int $uploadFormType
*/
-function setWorkUploadForm($form, $uploadFile = true)
+function setWorkUploadForm($form, $uploadFormType = 0)
{
$form->addElement('header', get_lang('UploadADocument'));
$form->addElement('hidden', 'contains_file', 0, array('id'=>'contains_file_id'));
$form->addElement('hidden', 'active', 1);
$form->addElement('hidden', 'accepted', 1);
- if ($uploadFile) {
- $form->addElement('file', 'file', get_lang('UploadADocument'), 'size="40" onchange="updateDocumentTitle(this.value)"');
- $form->add_real_progress_bar('uploadWork', 'file');
- }
$form->addElement('text', 'title', get_lang('Title'), array('id' => 'file_upload', 'class' => 'span4'));
- $form->add_html_editor('description', get_lang('Description'), false, false, getWorkDescriptionToolbar());
+ $form->addRule('title', get_lang('ThisFieldIsRequired'), 'required');
+
+ switch ($uploadFormType) {
+ case 0:
+ // File and text.
+ $form->addElement('file', 'file', get_lang('UploadADocument'), 'size="40" onchange="updateDocumentTitle(this.value)"');
+ $form->add_real_progress_bar('uploadWork', 'file');
+ $form->add_html_editor('description', get_lang('Description'), false, false, getWorkDescriptionToolbar());
+ break;
+ case 1:
+ // Only text.
+ $form->add_html_editor('description', get_lang('Description'), false, false, getWorkDescriptionToolbar());
+ $form->addRule('description', get_lang('ThisFieldIsRequired'), 'required');
+ break;
+ case 2:
+ // Only file.
+ $form->addElement('file', 'file', get_lang('UploadADocument'), 'size="40" onchange="updateDocumentTitle(this.value)"');
+ $form->add_real_progress_bar('uploadWork', 'file');
+ $form->addRule('file', get_lang('ThisFieldIsRequired'), 'required');
+ break;
+ }
+
$form->addElement('style_submit_button', 'submitWork', get_lang('Send'), array('class'=> 'upload', 'value' => "submitWork"));
}
@@ -3673,7 +3692,10 @@ function getFormWork($form, $defaults = array())
$form->addElement('html', '');
$form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar'));
- $form->addElement('checkbox', 'allow_text_assignment', null, get_lang('AllowTextAssignments'));
+
+ //$form->addElement('checkbox', 'allow_text_assignment', null, get_lang('AllowTextAssignments'));
+ $form->addElement('select', 'allow_text_assignment', get_lang('DocumentType'), getUploadDocumentType());
+
$form->addElement('html', '');
if ($defaults['enableExpiryDate'] && $defaults['enableEndDate']) {
@@ -3686,6 +3708,18 @@ function getFormWork($form, $defaults = array())
return $form;
}
+/**
+ * @return array
+ */
+function getUploadDocumentType()
+{
+ return array(
+ 0 => get_lang('AllowFileOrText'),
+ 1 => get_lang('AllowOnlyText'),
+ 2 => get_lang('AllowFiles')
+ );
+}
+
/**
* @param array $courseInfo
* @param bool $showScore