function smarty_function_cancel($params, $template) { Clips\require_widget_smarty_plugin('html', 'a'); $bundle_name = Clips\context('current_bundle'); $bundle = Clips\get_default($params, 'bundle', $bundle_name); $cancel = Clips\get_default($params, 'label', 'Cancel'); if ($bundle !== null) { $bundle = Clips\bundle($bundle); $cancel = $bundle->message($cancel); } $request = Clips\context('request'); $bs = $request->breadscrumb(); if (count($bs) > 1) { array_pop($bs); // Pop current $params['href'] = Clips\site_url(array_pop($bs)); $params['title'] = $cancel; $f = true; // Open the link smarty_block_a($params, '', $template, $f); $f = false; return smarty_block_a($params, $cancel, $template, $f); } return ''; }
function smarty_block_button($params, $content = '', $template, &$repeat) { if ($repeat) { Clips\clips_context('indent_level', 1, true); return; } $value = Clips\get_default($params, 'caption'); if ($value) { // We did have value, so the content is the JavaScript $id = Clips\get_default($params, 'id', 'clips_button_' . Clips\sequence('button')); $js = "\$(\"#{$id}\").click(function(){\n\t\t" . trim($content) . "\n\t});"; $content = $value; unset($params['caption']); $params['id'] = $id; Clips\context('jquery_init', $js, true); } // For i18n $bundle_name = Clips\context('current_bundle'); $bundle = Clips\get_default($params, 'bundle', $bundle_name); if ($bundle !== null) { $bundle = Clips\bundle($bundle); $content = $bundle->message($content); } Clips\context_pop('indent_level'); return Clips\create_tag_with_content('button', $content, $params); }
function smarty_function_submit($params, $template) { $bundle_name = Clips\context('current_bundle'); $bundle = Clips\get_default($params, 'bundle', $bundle_name); $submit = Clips\get_default($params, 'value', 'Submit'); if ($bundle !== null) { $bundle = Clips\bundle($bundle); $submit = $bundle->message($submit); } if (isset($params['value'])) { $params['value'] = $submit; } return Clips\create_tag('input', $params, array('type' => 'submit', 'value' => $submit, 'class' => array('btn', 'btn-primary'))); }
function smarty_block_lang($params, $content = '', $template, &$repeat) { if ($repeat) { return; } // Get the format from parameters, if no format parameter, use content instead $format = Clips\get_default($params, 'format', $content); $bundle_name = Clips\context('current_bundle'); if (!$bundle_name) { $bundle_name = ''; } $bundle = Clips\bundle(Clips\get_default($params, 'bundle', $bundle_name)); return $bundle->message($format, $content); }
function smarty_block_label($params, $content = '', $template, &$repeat) { if ($repeat) { Clips\clips_context('indent_level', 1, true); return; } Clips\context_pop('indent_level'); $bundle_name = Clips\context('current_bundle'); $bundle = Clips\get_default($params, 'bundle', $bundle_name); if ($bundle !== null) { $bundle = Clips\bundle($bundle); $content = $bundle->message($content); } return Clips\create_tag_with_content('label', $content, $params); }
public function format($obj) { if (is_array($obj) && $obj) { $result = array(); foreach ($obj as $k => $v) { $str = $v; if (is_string($k)) { $name = \Clips\to_name($k); if (is_object($v)) { $result[] = $this->processObject($v); } else { if (is_array($v)) { $result[] = $name . '="' . implode(' ', $v) . '"'; } else { // For i18n if ($k == 'placeholder' || $k == 'title' || $k == 'alt') { $bundle_name = \Clips\context('current_bundle'); if ($bundle_name !== null) { $bundle = \Clips\bundle($bundle_name); $result[] = $name . '="' . $bundle->message($v) . '"'; } else { $result[] = $name . '="' . $v . '"'; } } else { $result[] = $name . '="' . $v . '"'; } } } } else { if (is_array($v) || is_object($v)) { $result[] = $this->format((array) $v); } else { $result[] = $v; } } } return implode(' ', $result); } return ''; }
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); } } }
function smarty_block_action($params, $content = '', $template, &$repeat) { if ($repeat) { Clips\clips_context('indent_level', 1, true); return; } $default = array('class' => 'action'); $action = Clips\get_default($params, 'action'); if ($action && Clips\valid_obj($action, 'Clips\\Interfaces\\Action')) { $ps = $action->params(); $icon = $action->icon(); $caption = array(); if ($icon) { $caption[] = Clips\create_tag_with_content('i', '', array('class' => $icon)); $caption[] = Clips\create_tag_with_content('span', $action->label()); if ($action->children()) { $caption[] = Clips\create_tag_with_content('i', '', array('class' => array('fa', 'fa-angle-left', 'pull-right'))); } $caption = implode('', $caption); } else { $caption = $action->label(); } if (!isset($params['title'])) { // Add tooltip $params['title'] = $action->label(); } // This is valid action object switch ($action->type()) { case Action::CLIENT: $params['caption'] = $caption; if ($ps) { foreach ($ps as $k => $v) { $params['data-' . $k] = $v; } } $content = $action->content(); break; case Action::HEADER: return $caption; case Action::SERVER: $content = $caption; if ($ps) { $suffix = implode('/', array_map(function ($item) { return urlencode($item); }, $ps)); $params['uri'] = \Clips\path_join($action->content(), $suffix); } else { $params['uri'] = $action->content(); } break; case Action::EXTERNAL: $content = $caption; $suffix = array(); foreach ($ps as $k => $v) { $suffix[] = urlencode($k) . '=' . urlencode($v); } if ($suffix) { $suffix = implode('&', $suffix); $params['href'] = $action->content() . '?' . $suffix; } else { $params['href'] = $action->content(); } break; } unset($params['action']); } $value = Clips\get_default($params, 'caption'); if ($value) { // We did have value, so the content is the JavaScript $id = Clips\get_default($params, 'id', 'clips_action_' . Clips\sequence('action')); $js = "\$(\"#{$id}\").click(function(){\n\t\t" . trim($content) . "\n\t});"; $content = $template->fetch('string:' . $value); unset($params['caption']); $params['id'] = $id; $params['href'] = 'javascript:void(0)'; Clips\context('jquery_init', $js, true); } else { // Check for action uri $uri = Clips\get_default($params, 'uri'); if ($uri) { $params['href'] = Clips\site_url($uri); unset($params['uri']); } if (!isset($params['title'])) { // Add tooltip $params['title'] = trim($content); } } Clips\context_pop('indent_level'); $bundle_name = Clips\context('current_bundle'); $bundle = Clips\get_default($params, 'bundle', $bundle_name); if ($bundle !== null) { $bundle = Clips\bundle($bundle); $content = $bundle->message($content); } return Clips\create_tag_with_content('a', $content, $params, $default); }