From 954803b6b4583065f365935f7426b34740ca83cb Mon Sep 17 00:00:00 2001
From: SanyaNegi <sanya@sanya-HP-Notebook>
Date: Mon, 15 Apr 2019 15:07:04 +0530
Subject: [PATCH] MDL-24347: made changes in lib.php and template.php in
 mod/data to have a better html table

---
 mod/data/lib.php       | 168 ++++++++++++++++++++++++++++---------------------
 mod/data/templates.php |   4 +-
 2 files changed, 99 insertions(+), 73 deletions(-)

diff --git a/mod/data/lib.php b/mod/data/lib.php
index eace6e7..99de64d 100644
--- a/mod/data/lib.php
+++ b/mod/data/lib.php
@@ -597,85 +597,111 @@ class data_field_base {     // Base class for Database Field Types (see field/*/
 function data_generate_default_template(&$data, $template, $recordid=0, $form=false, $update=true) {
     global $DB;
 
-    if (!$data && !$template) {
-        return false;
-    }
-    if ($template == 'csstemplate' or $template == 'jstemplate' ) {
-        return '';
-    }
+if (!$data && !$template)
+{ return false; }
 
-    // get all the fields for that database
-    if ($fields = $DB->get_records('data_fields', array('dataid'=>$data->id), 'id')) {
+if ($template == 'csstemplate' or $template == 'jstemplate' )
+{ return ''; }
 
-        $table = new html_table();
-        $table->attributes['class'] = 'mod-data-default-template ##approvalstatus##';
-        $table->colclasses = array('template-field', 'template-token');
-        $table->data = array();
-        foreach ($fields as $field) {
-            if ($form) {   // Print forms instead of data
-                $fieldobj = data_get_field($field, $data);
-                $token = $fieldobj->display_add_field($recordid, null);
-            } else {           // Just print the tag
-                $token = '[['.$field->name.']]';
-            }
-            $table->data[] = array(
-                $field->name.': ',
-                $token
-            );
-        }
+// get all the fields for that database
+if ($fields = get_records('data_fields', 'dataid', $data->id, 'id')) {
 
-        if (core_tag_tag::is_enabled('mod_data', 'data_records')) {
-            $label = new html_table_cell(get_string('tags') . ':');
-            if ($form) {
-                $cell = data_generate_tag_form();
-            } else {
-                $cell = new html_table_cell('##tags##');
-            }
-            $table->data[] = new html_table_row(array($label, $cell));
-        }
+if ($template == 'listtemplate') {
 
-        if ($template == 'listtemplate') {
-            $cell = new html_table_cell('##edit##  ##more##  ##delete##  ##approve##  ##disapprove##  ##export##');
-            $cell->colspan = 2;
-            $cell->attributes['class'] = 'controls';
-            $table->data[] = new html_table_row(array($cell));
-        } else if ($template == 'singletemplate') {
-            $cell = new html_table_cell('##edit##  ##delete##  ##approve##  ##disapprove##  ##export##');
-            $cell->colspan = 2;
-            $cell->attributes['class'] = 'controls';
-            $table->data[] = new html_table_row(array($cell));
-        } else if ($template == 'asearchtemplate') {
-            $row = new html_table_row(array(get_string('authorfirstname', 'data').': ', '##firstname##'));
-            $row->attributes['class'] = 'searchcontrols';
-            $table->data[] = $row;
-            $row = new html_table_row(array(get_string('authorlastname', 'data').': ', '##lastname##'));
-            $row->attributes['class'] = 'searchcontrols';
-            $table->data[] = $row;
-        }
+$strhdr = '<table class="dbitemslist" style="width:100%">';
 
-        $str = '';
-        if ($template == 'listtemplate'){
-            $str .= '##delcheck##';
-            $str .= html_writer::empty_tag('br');
-        }
+$strhdr .= '<tr>';
+$str = '<tr>';
+foreach ($fields as $field) {
+$strhdr .= '<th class="dbfield '.$field->name.' header">';
+$str .= '<td class="dbfield '.$field->name.'">';
+if ($form)
+{ // Print forms instead of data
+$fieldobj = data_get_field($field, $data);
+$str .= $fieldobj->display_add_field($recordid); }
 
-        $str .= html_writer::start_tag('div', array('class' => 'defaulttemplate'));
-        $str .= html_writer::table($table);
-        $str .= html_writer::end_tag('div');
-        if ($template == 'listtemplate'){
-            $str .= html_writer::empty_tag('hr');
-        }
+else
+{ // Just print the tag 
+$strhdr .= $field->name;
+$str .= '[['.$field->name.']]'; }
 
-        if ($update) {
-            $newdata = new stdClass();
-            $newdata->id = $data->id;
-            $newdata->{$template} = $str;
-            $DB->update_record('data', $newdata);
-            $data->{$template} = $str;
-        }
+$strhdr .= '</th>';
+$str .= '</td>';
+}
+$strhdr .= '<th align="center">'.get_string('actions').'</th></tr>';//</table>';
+$str .= '<td align="center">##edit## ##more## ##delete## ##approve##</td></tr>';//</table>';
+// set list template header & footer
+$data->listtemplateheader = $strhdr;
+$style = '<style>.dbitemslist
+{ border-collapse:collapse;}
 
-        return $str;
-    }
+.dbitemslist td, .dbitemslist th
+{ border:1px solid black;}
+
+.dbitemslist th
+{ background-color:gray;}
+
+</style>';
+$data->listtemplatefooter = '</table>'.$style;
+} else {
+
+$str = '<div class="defaulttemplate">';
+$str .= '<table cellpadding="5">';
+
+foreach ($fields as $field) {
+
+$str .= '<tr><td valign="top" align="right">';
+// Yu: commenting this out, the id was wrong and will fix later
+//if ($template == 'addtemplate') {
+//$str .= '<label';
+//if (!in_array($field->type, array('picture', 'checkbox', 'date', 'latlong', 'radiobutton'))) {
+// $str .= ' for="[['.$field->name.'#id]]"'; //}
+
+//$str .= '>'.$field->name.'</label>';
+
+//} else { $str .= $field->name.': '; //}
+
+$str .= '</td>';
+
+$str .='<td>';
+if ($form)
+{ // Print forms instead of data 
+$fieldobj = data_get_field($field, $data);
+$str .= $fieldobj->display_add_field($recordid); }
+
+else
+{ // Just print the tag 
+$str .= '[['.$field->name.']]'; }
+
+$str .= '</td></tr>';
+
+}
+if ($template == 'singletemplate')
+{ $str .= '<tr><td align="center" colspan="2">##edit## ##delete## ##approve##</td></tr>'; }
+
+else if ($template == 'asearchtemplate')
+{ $str .= '<tr><td valign="top" align="right">'.get_string('authorfirstname', 'data').': </td><td>##firstname##</td></tr>'; $str .= '<tr><td valign="top" align="right">'.get_string('authorlastname', 'data').': </td><td>##lastname##</td></tr>'; }
+
+$str .= '</table>';
+$str .= '</div>';
+
+}
+
+if ($update) {
+$newdata = new object();
+$newdata->id = $data->id;
+$newdata->{$template} = addslashes($str);
+if (!update_record('data', $newdata))
+{ notify('Error updating template'); }
+
+else {
+$data->{$template} = $str;
+
+}
+}
+
+return $str;
+}
 }
 
 /**
diff --git a/mod/data/templates.php b/mod/data/templates.php
index ce5af6c..085f849 100644
--- a/mod/data/templates.php
+++ b/mod/data/templates.php
@@ -129,8 +129,8 @@ if (($mytemplate = data_submitted()) && confirm_sesskey()) {
         $resettemplate = true;
         $data->{$mode} = data_generate_default_template($data, $mode, 0, false, false);
         if ($mode == 'listtemplate') {
-            $data->listtemplateheader = '';
-            $data->listtemplatefooter = '';
+            //$data->listtemplateheader = '';
+            //$data->listtemplatefooter = '';
         }
     } else {
         if (isset($mytemplate->listtemplateheader)){
-- 
2.7.4

