2 ///////////////////////////////////////////////////////////////////////////
4 // NOTICE OF COPYRIGHT //
6 // Moodle - Modular Object-Oriented Dynamic Learning Environment //
7 // http://moodle.org //
9 // Copyright (C) 2005 Martin Dougiamas http://dougiamas.com //
11 // This program is free software; you can redistribute it and/or modify //
12 // it under the terms of the GNU General Public License as published by //
13 // the Free Software Foundation; either version 2 of the License, or //
14 // (at your option) any later version. //
16 // This program is distributed in the hope that it will be useful, //
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
19 // GNU General Public License for more details: //
21 // http://www.gnu.org/copyleft/gpl.html //
23 ///////////////////////////////////////////////////////////////////////////
25 require_once('../../config.php');
26 require_once('lib.php');
27 require_once($CFG->libdir
.'/blocklib.php');
29 $id = optional_param('id', 0, PARAM_INT
); // course module id
30 $d = optional_param('d', 0, PARAM_INT
); // database id
31 $mode = optional_param('mode', 'singletemplate', PARAM_ALPHA
);
34 if (! $cm = get_coursemodule_from_id('data', $id)) {
35 error('Course Module ID was incorrect');
37 if (! $course = get_record('course', 'id', $cm->course
)) {
38 error('Course is misconfigured');
40 if (! $data = get_record('data', 'id', $cm->instance
)) {
41 error('Course module is incorrect');
45 if (! $data = get_record('data', 'id', $d)) {
46 error('Data ID is incorrect');
48 if (! $course = get_record('course', 'id', $data->course
)) {
49 error('Course is misconfigured');
51 if (! $cm = get_coursemodule_from_instance('data', $data->id
, $course->id
)) {
52 error('Course Module ID was incorrect');
56 require_login($course->id
, false, $cm);
58 $context = get_context_instance(CONTEXT_MODULE
, $cm->id
);
59 require_capability('mod/data:managetemplates', $context);
61 if (!count_records('data_fields','dataid',$data->id
)) { // Brand new database!
62 redirect($CFG->wwwroot
.'/mod/data/field.php?d='.$data->id
); // Redirect to field entry
65 add_to_log($course->id
, 'data', 'templates view', "templates.php?id=$cm->id&d=$data->id", $data->id
, $cm->id
);
68 /// Print the page header
70 $strdata = get_string('modulenameplural','data');
72 // For the javascript for inserting template tags: initialise the default textarea to
73 // 'edit_template' - it is always present in all different possible views.
75 $editorobj = 'editor_'.md5('template');
77 $bodytag = 'onload="';
78 $bodytag .= 'if (typeof('.$editorobj.') != \'undefined\') { currEditor = '.$editorobj.'; } ';
79 $bodytag .= 'currTextarea = document.getElementById(\'tempform\').template;';
82 // Javascript to insert the field tags into the textarea.
83 $meta = '<script type="text/javascript">'."\n";
84 $meta .= '//<![CDATA['."\n";
85 $meta .= 'function insert_field_tags(selectlist) {';
86 $meta .= ' if (typeof(currEditor) != \'undefined\' && currEditor._editMode == \'wysiwyg\') {';
88 $meta .= ' currEditor.insertHTML(selectlist.options[selectlist.selectedIndex].value); ';
90 // For inserting when in HTMLArea code view or for normal textareas
91 $meta .= ' insertAtCursor(currTextarea, selectlist.options[selectlist.selectedIndex].value);';
94 $meta .= '//]]>'."\n";
95 $meta .= '</script>'."\n";
97 $navigation = build_navigation('', $cm);
98 print_header_simple($data->name
, '', $navigation,
99 '', $meta, true, update_module_button($cm->id
, $course->id
, get_string('modulename', 'data')),
100 navmenu($course, $cm), '', $bodytag);
102 print_heading(format_string($data->name
));
105 /// Groups needed for Add entry tab
106 $currentgroup = groups_get_activity_group($cm);
107 $groupmode = groups_get_activity_groupmode($cm);
110 $currenttab = 'templates';
113 /// Processing submitted data, i.e updating form.
114 $resettemplate = false;
116 /// html editor is by default disabled
117 $editor = isset($SESSION->data_use_editor
) ?
$SESSION->data_use_editor
: (can_use_html_editor() ?
1 : 0);
119 if (($mytemplate = data_submitted($CFG->wwwroot
.'/mod/data/templates.php')) && confirm_sesskey()) {
120 $newtemplate->id
= $data->id
;
121 $newtemplate->{$mode} = $mytemplate->template
;
123 if (!empty($mytemplate->switcheditor
)) {
124 $editor = $editor ?
0 : 1;
125 $SESSION->data_use_editor
= $editor;
126 } else if (!empty($mytemplate->defaultform
)) {
127 // Reset the template to default, but don't save yet.
128 $resettemplate = true;
129 $data->{$mode} = data_generate_default_template($data, $mode, 0, false, false);
130 if ($mode == 'listtemplate') {
131 $data->listtemplateheader
= '';
132 $data->listtemplatefooter
= '';
135 if (isset($mytemplate->listtemplateheader
)){
136 $newtemplate->listtemplateheader
= $mytemplate->listtemplateheader
;
138 if (isset($mytemplate->listtemplatefooter
)){
139 $newtemplate->listtemplatefooter
= $mytemplate->listtemplatefooter
;
141 if (isset($mytemplate->rsstitletemplate
)){
142 $newtemplate->rsstitletemplate
= $mytemplate->rsstitletemplate
;
145 // Check for multiple tags, only need to check for add template.
146 if ($mode != 'addtemplate' or data_tags_check($data->id
, $newtemplate->{$mode})) {
147 if (update_record('data', $newtemplate)) {
148 notify(get_string('templatesaved', 'data'), 'notifysuccess');
151 add_to_log($course->id
, 'data', 'templates saved', "templates.php?id=$cm->id&d=$data->id", $data->id
, $cm->id
);
154 echo '<div class="littleintro" style="text-align:center">'.get_string('header'.$mode,'data').'</div>';
157 /// If everything is empty then generate some defaults
158 if (empty($data->addtemplate
) and empty($data->singletemplate
) and
159 empty($data->listtemplate
) and empty($data->rsstemplate
)) {
160 data_generate_default_template($data, 'singletemplate');
161 data_generate_default_template($data, 'listtemplate');
162 data_generate_default_template($data, 'addtemplate');
163 data_generate_default_template($data, 'asearchtemplate'); //Template for advanced searches.
164 data_generate_default_template($data, 'rsstemplate');
168 echo '<form id="tempform" action="templates.php?d='.$data->id
.'&mode='.$mode.'" method="post">';
170 echo '<input name="sesskey" value="'.sesskey().'" type="hidden" />';
171 // Print button to autogen all forms, if all templates are empty
173 if (!$resettemplate) {
174 // Only reload if we are not resetting the template to default.
175 $data = get_record('data', 'id', $d);
177 print_simple_box_start('center','80%');
178 echo '<table cellpadding="4" cellspacing="0" border="0">';
180 /// Add the HTML editor(s).
181 $usehtmleditor = $editor && can_use_html_editor() && ($mode != 'csstemplate') && ($mode != 'jstemplate');
182 if ($mode == 'listtemplate'){
183 // Print the list template header.
185 echo '<td> </td>';
187 echo '<div style="text-align:center"><label for="edit-listtemplateheader">'.get_string('header','data').'</label></div>';
188 print_textarea($usehtmleditor, 10, 72, 0, 0, 'listtemplateheader', $data->listtemplateheader
);
193 // Print the main template.
195 echo '<tr><td valign="top">';
196 if ($mode != 'csstemplate' and $mode != 'jstemplate') {
197 // Add all the available fields for this data.
198 echo '<label for="availabletags">'.get_string('availabletags','data').'</label>';
199 helpbutton('tags', get_string('tags'), 'data');
203 echo '<select name="fields1[]" id="availabletags" size="12" onclick="insert_field_tags(this)">';
205 $fields = get_records('data_fields', 'dataid', $data->id
);
206 echo '<optgroup label="'.get_string('fields', 'data').'">';
207 foreach ($fields as $field) {
208 echo '<option value="[['.$field->name
.']]" title="'.$field->description
.'">'.$field->name
.' - [['.$field->name
.']]</option>';
212 if ($mode == 'addtemplate') {
213 echo '<optgroup label="'.get_string('fieldids', 'data').'">';
214 foreach ($fields as $field) {
215 if (in_array($field->type
, array('picture', 'checkbox', 'date', 'latlong', 'radiobutton'))) {
216 continue; //ids are not usable for these composed items
218 echo '<option value="[['.$field->name
.'#id]]" title="'.$field->description
.' id">'.$field->name
.' id - [['.$field->name
.'#id]]</option>';
223 // Print special tags. fix for MDL-7031
224 if ($mode != 'addtemplate' && $mode != 'asearchtemplate') { //Don't print special tags when viewing the advanced search template and add template.
225 echo '<optgroup label="'.get_string('buttons', 'data').'">';
226 echo '<option value="##edit##">' .get_string('edit', 'data'). ' - ##edit##</option>';
227 echo '<option value="##delete##">' .get_string('delete', 'data'). ' - ##delete##</option>';
228 echo '<option value="##approve##">' .get_string('approve', 'data'). ' - ##approve##</option>';
229 if ($mode != 'singletemplate') {
230 // more points to single template - not useable there
231 echo '<option value="##more##">' .get_string('more', 'data'). ' - ##more##</option>';
232 echo '<option value="##moreurl##">' .get_string('moreurl', 'data'). ' - ##moreurl##</option>';
235 echo '<optgroup label="'.get_string('other', 'data').'">';
236 echo '<option value="##timeadded##">'.get_string('timeadded', 'data'). ' - ##timeadded##</option>';
237 echo '<option value="##timemodified##">'.get_string('timemodified', 'data'). ' - ##timemodified##</option>';
238 echo '<option value="##user##">' .get_string('user'). ' - ##user##</option>';
239 if ($mode != 'singletemplate') {
240 // more points to single template - not useable there
241 echo '<option value="##comments##">' .get_string('comments', 'data'). ' - ##comments##</option>';
246 if ($mode == 'asearchtemplate') {
247 echo '<optgroup label="'.get_string('other', 'data').'">';
248 echo '<option value="##firstname##">' .get_string('authorfirstname', 'data'). ' - ##firstname##</option>';
249 echo '<option value="##lastname##">' .get_string('authorlastname', 'data'). ' - ##lastname##</option>';
254 echo '<br /><br /><br /><br /><input type="submit" name="defaultform" value="'.get_string('resettemplate','data').'" />';
255 if (can_use_html_editor()) {
258 $switcheditor = get_string('editordisable', 'data');
260 $switcheditor = get_string('editorenable', 'data');
262 echo '<input type="submit" name="switcheditor" value="'.s($switcheditor).'" />';
265 echo '<br /><br /><br /><br /><input type="submit" name="defaultform" value="'.get_string('resettemplate','data').'" />';
270 if ($mode == 'listtemplate'){
271 echo '<div style="text-align:center"><label for="edit-template">'.get_string('multientry','data').'</label></div>';
273 echo '<div style="text-align:center"><label for="edit-template">'.get_string($mode,'data').'</label></div>';
276 print_textarea($usehtmleditor, 20, 72, 0, 0, 'template', $data->{$mode});
280 if ($mode == 'listtemplate'){
282 echo '<td> </td>';
284 echo '<div style="text-align:center"><label for="edit-listtemplatefooter">'.get_string('footer','data').'</label></div>';
285 print_textarea($usehtmleditor, 10, 72, 0, 0, 'listtemplatefooter', $data->listtemplatefooter
);
288 } else if ($mode == 'rsstemplate') {
290 echo '<td> </td>';
292 echo '<div style="text-align:center"><label for="edit-rsstitletemplate">'.get_string('rsstitletemplate','data').'</label></div>';
293 print_textarea($usehtmleditor, 10, 72, 0, 0, 'rsstitletemplate', $data->rsstitletemplate
);
298 echo '<tr><td style="text-align:center" colspan="2">';
299 echo '<input type="submit" value="'.get_string('savetemplate','data').'" /> ';
301 echo '</td></tr></table>';
304 print_simple_box_end();
307 if ($usehtmleditor) {
308 use_html_editor('template');
309 if ($mode == 'listtemplate'){
310 use_html_editor('listtemplateheader');
311 use_html_editor('listtemplatefooter');
312 } else if ($mode == 'rsstemplate'){
313 use_html_editor('rsstitletemplate');
318 print_footer($course);