public function init() { $this->tool->widget('ListView'); if (isset($this->value)) { if (!is_array($this->value)) { $this->value = array($this->value); } } else { $this->value = array(\Clips\default_form_name()); } // Initialize the ListView in javacript foreach ($this->getConfig() as $name => $config) { if ($config) { // Setting the default values for the datatable configuration if (!isset($config->ajax)) { $controller_class = \Clips\context('controller_seg'); $method = \Clips\context('controller_method'); $uri = \Clips\context('uri'); if (strpos($uri, $method) !== false) { $d = explode($method, $uri); $config->ajax = \Clips\site_url(\Clips\path_join($d[0], $name)); } else { if (strpos($uri, $controller_class) !== false) { $config->ajax = \Clips\site_url(\Clips\path_join($uri, $name)); } else { $config->ajax = \Clips\site_url(\Clips\path_join($uri, $controller_class, $name)); } } } $config->processing = true; $config->serverSide = true; foreach ($config->columns as $col) { if (isset($col->data)) { // Must smooth the data $col->data = \Clips\smooth($col->data); } if (isset($col->refer)) { $col->refer = \Clips\smooth($col->refer); } if (isset($col->action)) { // If has action, use action render $col->render = 'datatable_action_column'; } } // Adding the initialize script to jquery init \Clips\context('jquery_init', '$("ul[name=' . \Clips\to_flat($name) . ']").listview(' . json_encode($config) . ')', true); } } }
public function init() { $this->tool->widget('DataTable'); if (isset($this->value)) { if (!is_array($this->value)) { $this->value = array($this->value); } } else { $this->value = array(\Clips\default_form_name()); } // Initialize the datatable in javacript foreach ($this->getConfig() as $name => $config) { if ($config) { // Enforce security by default for DataTable $config->security = $this->securityengine; $config->name = $name; // Setting the default values for the datatable configuration if (!isset($config->ajax)) { $controller_class = \Clips\context('controller_seg'); $method = \Clips\context('controller_method'); $uri = \Clips\context('uri'); if (strpos($uri, $method) !== false) { $d = explode($method, $uri); $config->ajax = \Clips\site_url(\Clips\path_join($d[0], $name)); } else { if (strpos($uri, $controller_class) !== false) { $config->ajax = \Clips\site_url(\Clips\path_join($uri, $name)); } else { $config->ajax = \Clips\site_url(\Clips\path_join($uri, $controller_class, $name)); } } } $config->processing = true; $config->serverSide = true; // The bundle configuration in anntation has the highest priority $bundle = \Clips\get_default($this, 'bundle', null); if ($bundle === null) { // Try configuration's bundle settings $bundle = \Clips\get_default($config, 'bundle', null); if ($bundle === null) { // We can't find the bundle in annotation, try to find it using default name $bundle_name = 'pagination/' . $name; $bundle = $this->tool->bundle($bundle_name); if ($bundle->isEmpty()) { // All default bundle can't be found, try current controller's bundle $bundle = \Clips\context('current_bundle'); if ($bundle === null) { $bundle = ''; } } } } $bundle = \Clips\bundle($bundle); // Update the columns configuration to the filtered columns configuration $config->columns = $config->columns(); $replaces = array(); foreach ($config->columns as $col) { if (isset($col->title)) { $col->title = $bundle->message($col->title); } if (isset($col->data)) { // Must smooth the data if (strpos($col->data, " as ")) { $d = explode(' as ', $col->data); if ($d) { $col->data = trim($d[1]); } } $col->data = \Clips\smooth($col->data); } if (isset($col->refer)) { $col->refer = \Clips\smooth($col->refer); } if (isset($col->render)) { if (array_search($col->render, $replaces) === false) { $replaces[] = $col->render; } } if (isset($col->action)) { // If has action, use action render $col->render = 'datatable_action_column'; if (array_search($col->render, $replaces) === false) { $replaces[] = $col->render; } } } // Clean the where data stored in the session $controller = \Clips\context('controller'); if ($controller) { $controller->request->session($name, null); } $json = $config->toJson(); foreach ($replaces as $r) { $json = str_replace('"' . $r . '"', $r, $json); } // Adding the initialize script to jquery init \Clips\context('jquery_init', 'if(window[\'DatatableSettings\'] == undefined ) { DatatableSettings = {}; } DatatableSettings["' . $name . '"] = ' . $json . ';$("table[name=' . \Clips\to_flat($name) . ']").DataTable(DatatableSettings["' . $name . '"]);', true); } } }