public static function render($module, $container = false) { $site = $module['site'] == 'admin' ? '\\Admin' : ''; $mod_class = '\\GCore' . $site . '\\Modules\\' . \GCore\Libs\Str::camilize($module['type']) . '\\' . \GCore\Libs\Str::camilize($module['type']); $mod_params = new \GCore\Libs\Parameter($module['params']); ob_start(); $class = new $mod_class(); $class->display($module); //initialize and render view $view = new \GCore\Libs\View(); $view->initialize($class); $view->renderModule($module['type']); $output = ob_get_clean(); //check the returned output settings if ($container === false) { //do nothing, we are returning plain output } elseif ($container === true) { $output = \GCore\Helpers\Html::container('div', $output, array('class' => 'module-body')); if ((bool) $mod_params->get('show_title') === true) { $output = \GCore\Helpers\Html::container('h3', $module['title'], array('class' => 'module-title')) . "\n" . $output; } $output = \GCore\Helpers\Html::container('div', $output, array('class' => 'module' . (strlen($mod_params->get('class_sfx', '')) > 0 ? ' ' . $mod_params->get('class_sfx', '') : ''))); } elseif (is_callable($container)) { //some function provided: callback/lambada/anonymous $output = $container($output, $module); } return $output; }
public static function config($data = array(), $k = '{N}') { echo '<div class="original_element_config">'; //\GCore\Helpers\Html::formSecStart('original_element_config', 'multi_origin_config'); $sub_fields_count = $k; $fields = !empty($data['inputs']) ? $data['inputs'] : array(); $i = 0; foreach ($fields as $sub_id => $field) { $sub_type = !empty($field['render_type']) ? $field['render_type'] : $field['type']; $class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Fields\\' . \GCore\Libs\Str::camilize($sub_type) . '\\' . \GCore\Libs\Str::camilize($sub_type); ob_start(); $class::config($field, $sub_fields_count); $con = ob_get_clean(); $con = str_replace('{N}', $sub_fields_count, $con); $con = str_replace('Form[extras][fields][' . $sub_fields_count . ']', 'Form[extras][fields][' . $k . '][inputs][' . $sub_id . ']', $con); $con = str_replace('-' . $sub_fields_count, '-' . $k . '-' . $i, $con); //fix for tabs $con = str_replace('original_element_config', '', $con); echo '<div class="panel panel-default">'; echo '<div class="well well-sm">' . $sub_id . '</div>'; echo $con; echo '</div>'; $sub_fields_count++; $i++; } echo \GCore\Helpers\Html::input('Form[extras][fields][' . $k . '][type]', array('type' => 'hidden', 'value' => 'multi')); echo \GCore\Helpers\Html::input('Form[extras][fields][' . $k . '][id]', array('type' => 'hidden', 'value' => 'multi-' . $k)); //echo \GCore\Helpers\Html::input('Form[extras][fields]['.$k.'][layout]', array('type' => 'hidden', 'value' => 'wide')); echo \GCore\Helpers\Html::input('Form[extras][fields][' . $k . '][name]', array('type' => 'hidden', 'value' => 'multi')); echo \GCore\Helpers\Html::input('Form[extras][fields][' . $k . '][container_id]', array('type' => 'hidden', 'id' => 'container_id' . $k, 'value' => '0')); echo '</div>'; //\GCore\Helpers\Html::formSecEnd(); }
public function on_list($fld, $ttl, &$row) { foreach ($this->plugins as $plugin) { $helper = \GCore\Libs\Str::camilize($plugin . '_helper'); $this->view->{$helper}->on_list($fld, $ttl, $row); } }
function edit() { $id = $this->Request->data('id', null); $this->Connection->id = $id; $connection = $this->Connection->load(); if (!empty($connection)) { $this->data = $connection; } $this->set(array('connection' => $connection)); //get tables list $tables = $this->Connection->dbo->getTablesList(); array_unshift($tables, ''); $this->set('tables', array_combine($tables, $tables)); if (!empty($connection['Connection']['extras']['ndb']['enabled'])) { $dbo_config = array('type' => $connection['Connection']['extras']['ndb']['driver'], 'host' => $connection['Connection']['extras']['ndb']['host'], 'name' => $connection['Connection']['extras']['ndb']['database'], 'user' => $connection['Connection']['extras']['ndb']['user'], 'pass' => $connection['Connection']['extras']['ndb']['password'], 'prefix' => $connection['Connection']['extras']['ndb']['prefix']); $tables = \GCore\Libs\Database::getInstance($dbo_config)->getTablesList(); array_unshift($tables, ''); $this->set('tables', array_combine($tables, $tables)); } //get blocks files $blocks_files = \GCore\Libs\Folder::getFiles(\GCore\C::ext_path('chronoconnectivity', 'admin') . 'blocks' . DS); $blocks = array(); $blocks_classes = array(); foreach ($blocks_files as $block) { $name = str_replace(array(\GCore\C::ext_path('chronoconnectivity', 'admin') . 'blocks' . DS, '.php'), '', $block); $blocks_classes[] = $class = '\\GCore\\Admin\\Extensions\\Chronoconnectivity\\Blocks\\' . \GCore\Libs\Str::camilize($name); $blocks[$class::$name] = $class::$title; } $this->set('blocks', $blocks); $this->set('blocks_classes', $blocks_classes); $rules = $this->Group->find('list', array('fields' => array('id', 'title'))); $rules['owner'] = 'Owner'; $this->set('rules', $rules); $actions_list = array('index', 'view', 'edit', 'save', 'save_list', 'toggle', 'delete'); $standard_actions = array('view', 'edit'); foreach ($standard_actions as $standard_action) { if (!isset($this->data['Connection']['extras']['front']['actions'][$standard_action])) { $this->data['Connection']['extras']['front']['actions'][$standard_action] = array(); } if (!isset($this->data['Connection']['extras']['admin']['actions'][$standard_action])) { $this->data['Connection']['extras']['admin']['actions'][$standard_action] = array(); } } $this->set('actions_list', $actions_list); $this->set('standard_actions', $standard_actions); $plugins_files = \GCore\Libs\Folder::getFiles(\GCore\C::ext_path('chronoconnectivity', 'admin') . 'plugins' . DS); $plugins = array(); $plugins_classes = array(); foreach ($plugins_files as $plugin) { $name = str_replace(array(\GCore\C::ext_path('chronoconnectivity', 'admin') . 'plugins' . DS, '.php'), '', $plugin); $plugins_classes[] = $class = '\\GCore\\Admin\\Extensions\\Chronoconnectivity\\Plugins\\' . \GCore\Libs\Str::camilize($name) . '\\' . \GCore\Libs\Str::camilize($name); $plugins[$class::$name] = $class::$title; } $this->set('plugins', $plugins); $this->set('plugins_classes', $plugins_classes); }
public static function getInstance($name = '', $settings = array()) { static $instances; if (!isset($instances)) { $instances = array(); } if (empty($name)) { $doc = \GCore\Libs\Document::getInstance(); $name = $doc->theme; } if (empty($name)) { $class = '\\GCore\\Helpers\\Theme'; } else { $class = '\\GCore\\Helpers\\Themes\\' . \GCore\Libs\Str::camilize($name); } if (empty($instances[$name])) { $instances[$name] = new $class($settings); return $instances[$name]; } else { return $instances[$name]; } }
function build_action_display($action, $events, $root, $configs) { $actions_output = array(); $pcs = explode('_', $action); $id = $pcs[count($pcs) - 1]; unset($pcs[count($pcs) - 1]); $name = implode('_', $pcs); $action_class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Actions\\' . \GCore\Libs\Str::camilize($name) . '\\' . \GCore\Libs\Str::camilize($name); if (class_exists($action_class) and isset($action_class::$title)) { $action_class = new $action_class(); /* $actions_output[] = $action_label = \GCore\Helpers\Html::container('label', $action_class::$title.'<font style="color:#f00"> ('.$id.')</font>', array( 'class' => 'action_label' )); if(!empty($configs[$id]['action_label'])){ $actions_output[] = \GCore\Helpers\Html::container('label', '<font style="color:#888"> - '.$configs[$id]['action_label'].'</font>', array( 'class' => 'action_label' )); } */ $icons_code = '<span class="edit_icon action_icon label label-primary" title="Edit">Edit</span><span class="drag_icon action_icon label label-warning" title="Drag">Drag</span><span class="delete_icon action_icon label label-danger" title="Delete">Delete</span>'; $action_icons = \GCore\Helpers\Html::container('div', $icons_code, array('id' => 'action_icons_' . $id, 'class' => 'action_icons pull-right')); $action_title = '<div class="pull-left action-title-labels"><span class="form_action_label label label-primary">' . $action_class::$title . '</span><span style="" class="label label-info action_icon_number">' . $id . '</span>' . (!empty($configs[$id]['action_label']) ? '<span style="" class="label action_label_label">' . $configs[$id]['action_label'] . '</span>' : '') . '</div>'; $actions_output[] = \GCore\Helpers\Html::container('div', $action_title . $action_icons . '<div class="clearfix"></div>', array('class' => 'panel-heading')); //add footer with some diagnostics if ($this->view->vars['chronoforms_settings']->get('wizard.display_diagnostics', 1)) { if (method_exists($action_class, 'config_check')) { $footer_contents = '<span class="label label-default label_diagnostics"><i class="fa fa-puzzle-piece fa-lg"></i></span>'; $check_result = $action_class::config_check(isset($configs[$id]) ? $configs[$id] : array()); foreach ($check_result as $text => $bool) { if ($bool === true) { $class = 'label-success'; $icon_class = 'fa-check'; $footer_contents .= '<span class="label ' . $class . '">' . $text . ' <i class="fa ' . $icon_class . ' fa-lg"></i></span>'; } else { if ($bool === false) { $class = 'label-danger'; $icon_class = 'fa-times'; $footer_contents .= '<span class="label ' . $class . '">' . $text . ' <i class="fa ' . $icon_class . ' fa-lg"></i></span>'; } else { if ($bool === -1) { $class = 'label-warning'; $icon_class = 'fa-exclamation'; $footer_contents .= '<span class="label ' . $class . '">' . $text . ' <i class="fa ' . $icon_class . ' fa-lg"></i></span>'; } else { $class = 'label-info'; $icon_class = 'fa-gear'; $footer_contents .= '<span class="label ' . $class . '"><i class="fa ' . $icon_class . ' fa-lg"></i> ' . $text . ' ' . $bool . '</span>'; } } } } $actions_output[] = \GCore\Helpers\Html::container('div', $footer_contents, array('class' => 'panel-heading action_diagnostics_area')); } } $action_dna = '<input type="hidden" name="' . $root . '[' . $action . ']" alt="ghost" class="events_dna" value="">'; $action_events = array(); if (!empty($events)) { foreach ($events as $event => $info) { $event_dna = '<input type="hidden" name="' . $root . '[' . $action . '][' . $event . ']" alt="ghost" class="events_dna" value="">'; if ($event == 'success' or isset($action_class->events_status[$event]) and $action_class->events_status[$event] == 'success') { $e_cl = 'good_event alert alert-success'; $label_class = 'form_event_label label label-success'; } else { if ($event == 'fail' or isset($action_class->events_status[$event]) and $action_class->events_status[$event] == 'fail') { $e_cl = 'bad_event alert alert-danger'; $label_class = 'form_event_label label label-danger'; } else { $e_cl = 'normal_event alert alert-info'; $label_class = 'form_event_label label label-info'; } } $event_label = \GCore\Helpers\Html::container('label', 'On ' . trim($event), array('class' => $label_class)); $event_container = \GCore\Helpers\Html::container('div', $event_label . $event_dna . $this->build($info, $root . '[' . $action . '][' . $event . ']', $configs), array('id' => 'cfactionevent_' . $name . '_' . $id . '_' . $event, 'class' => 'form_event ' . $e_cl)); $action_events[] = $event_container; } } ob_start(); $action_class::config(isset($configs[$id]) ? $configs[$id] : array()); $action_config = ob_get_clean(); $action_config = str_replace('{N}', $id, $action_config); $body_contents = $action_dna . implode("\n", $action_events) . $action_config; if (empty($this->config)) { $body_contents = $action_dna . implode("\n", $action_events); } $actions_output[] = \GCore\Helpers\Html::container('div', $body_contents, array('class' => 'panel-body')); //$actions_output[] = $action_clear = '<div class="clear"> </div>'; $container = \GCore\Helpers\Html::container('div', implode("\n", $actions_output), array('id' => 'cfaction_' . $name . '_element_' . $id, 'class' => 'cfaction_' . $name . '_element_view wizard_element form_action panel panel-default', 'item_id' => $name)); return $container; } return ''; }
function beforeSave(&$data, &$params, $mode){ foreach($data['extras']['actions_config'] as $f_k => $f_info){ if(strpos($f_k, '{N}') !== false){ unset($data['extras']['actions_config'][$f_k]); } } if(!empty($data['extras']['fields']) AND $data['form_type'] == '1'){ foreach($data['extras']['fields'] as $f_k => $f_info){ if(strpos($f_k, '{N}') !== false){ unset($data['extras']['fields'][$f_k]); } } //$data['wizardcode'] = serialize($data['fields_config']); if(!empty($data['extras']['fields'])){ ob_start(); \GCore\Helpers\Html::active_set('div');//!empty($data['params']['html_helper_set']) ? $data['params']['html_helper_set'] : 'div'); /*if(!empty($data['params']['theme']) AND $data['params']['theme'] != 'bootstrap3'){ $doc = \GCore\Libs\Document::getInstance(); $doc->theme = $data['params']['theme']; }*/ $theme = !empty($data['params']['theme']) ? $data['params']['theme'] : ''; $doc = \GCore\Libs\Document::getInstance(); $doc->theme = $theme; //echo \GCore\Helpers\Html::formSecStart(); $containers_ids = array(); $containers_configs = array(); foreach($data['extras']['fields'] as $k => $field){ if($field['type'] == 'multi' AND isset($field['inputs'])){ foreach($field['inputs'] as $sub_id => $input){ $field['inputs'][$sub_id] = $this->fix_field_data($field['inputs'][$sub_id]); } }else{ $field = $this->fix_field_data($field); } if($field['type'] == 'container'){ //if this container is also a root container then close existing ones if($field['container_id'] == 0){ //close all open containers foreach($containers_ids as $containers_id){ $container_id = array_pop($containers_ids); echo $this->build_container_code($containers_configs[$container_id], 'end', $k); } }else{ check_parent_container: if(!empty($containers_ids)){ $last_container_id = array_pop($containers_ids); if($field['container_id'] == $last_container_id){ //do nothing, we should add the field as regular array_push($containers_ids, $last_container_id); }else{ //one container has just ended, because the element belongs to a differnt one, close it echo $this->build_container_code($containers_configs[$last_container_id], 'end', $k); goto check_parent_container; } } } echo $this->build_container_code($field, 'start', $k); array_push($containers_ids, $k); $containers_configs[$k] = $field; }else{ if(isset($field['container_id'])){ if($field['container_id'] == 0){ //close all open containers foreach(array_keys($containers_ids) as $c_k){ $container_id = array_pop($containers_ids); echo $this->build_container_code($containers_configs[$container_id], 'end', $k); } }else{ check_container: if(!empty($containers_ids)){ $last_container_id = array_pop($containers_ids); if($field['container_id'] == $last_container_id){ //do nothing, we should add the field as regular array_push($containers_ids, $last_container_id); }else{ //one container has just ended, because the element belongs to a differnt one, close it echo $this->build_container_code($containers_configs[$last_container_id], 'end', $k); goto check_container; } } } } if($field['type'] == 'hidden' OR !empty($field['pure_code'])){ echo \GCore\Helpers\Html::input($field['name'], $field); }else{ if(!empty($field['dynamic_data']['enabled']) AND !empty($field['dynamic_data']['data_path']) AND !empty($field['dynamic_data']['value_key']) AND !empty($field['dynamic_data']['text_key'])){ echo $this->build_dynamic_element($field); }else{ /*if(isset($field['label'])){ $position = isset($field['label_pos']) ? $field['label_pos'] : 'left'; $field['label'] = array('text' => $field['label'], 'position' => $position); }*/ if($field['type'] == 'multi' AND isset($field['inputs'])){ foreach($field['inputs'] as $sub_id => $input){ if(!empty($input['dynamic_data']['enabled']) AND !empty($input['dynamic_data']['data_path']) AND !empty($input['dynamic_data']['value_key']) AND !empty($input['dynamic_data']['text_key'])){ $field['inputs'][$sub_id]['code'] = $this->build_dynamic_element($input, true); $field['inputs'][$sub_id]['type'] = 'custom'; //$field['inputs'][$sub_id]['label'] = ''; } } echo \GCore\Helpers\Html::formLine($field['name'], $field); }else{ echo \GCore\Helpers\Html::formLine($field['name'], $field); } //echo \GCore\Helpers\Html::formLine($field['name'], $field); } } } } //close any empty containers with no fields after them while($container_id = array_pop($containers_ids)){ echo $this->build_container_code($containers_configs[$container_id], 'end', $container_id); } //echo \GCore\Helpers\Html::formSecEnd(); //echo \GCore\Helpers\Html::formEnd(); $data['content'] = ob_get_clean(); }else{ $data['content'] = ''; } } foreach($data['extras']['actions_config'] as $k => $act_info){ if(!empty($act_info['__action_title__'])){ $action_title = $act_info['__action_title__']; $classname = '\GCore\Admin\Extensions\Chronoforms\Actions\\'.\GCore\Libs\Str::camilize($action_title)."\\".\GCore\Libs\Str::camilize($action_title); if(method_exists($classname, 'on_form_save')){ ${$classname} = new $classname(); ${$classname}->on_form_save($data, $k); } } } if(!empty(self::$tabs)){ foreach(self::$tabs as $container_id => $tabs){ $tabs_bar = ''; foreach($tabs as $tab_id => $tab_title){ $tab_class = empty($tabs_bar) ? ' class="active"' : ''; $tabs_bar .= '<li'.$tab_class.'><a href="#'.$tab_id.'" data-g-toggle="tab">'.$tab_title.'</a></li>'; } $data['content'] = str_replace('__TABS_TITLES__'.$container_id.'__', $tabs_bar, $data['content']); } } parent::beforeSave($data, $params, $mode); }
echo $this->Html->formSecStart('original_element'); $inputs = array(); foreach ($fields as $k => $field) { $class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Fields\\' . \GCore\Libs\Str::camilize($field) . '\\' . \GCore\Libs\Str::camilize($field); $settings = $class::$settings; //unset($settings['label']); $inputs[] = $settings; } echo $this->Html->formLine('__wizard_multi' . rand(), array('type' => 'multi', 'label' => '', 'layout' => 'wide', 'inputs' => $inputs)); echo $this->Html->formSecEnd(); ?> <div class="original_element_config"> <?php $sub_fields_count = $fields_count; foreach ($fields as $k => $field) { $class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Fields\\' . \GCore\Libs\Str::camilize($field) . '\\' . \GCore\Libs\Str::camilize($field); ob_start(); $class::config(array(), $sub_fields_count); $con = ob_get_clean(); $con = str_replace('{N}', $sub_fields_count, $con); $con = str_replace('Form[extras][fields][' . $sub_fields_count . ']', 'Form[extras][fields][' . $fields_count . '][inputs][' . $field . $sub_fields_count . ']', $con); echo '<div class="panel panel-default">'; echo '<div class="well well-sm">' . $field . $sub_fields_count . '</div>'; echo $con; echo '</div>'; $sub_fields_count++; } //echo $this->Html->input('multi_field', array('type' => 'hidden', 'value' => 1)); echo $this->Html->input('Form[extras][fields][' . $fields_count . '][type]', array('type' => 'hidden', 'value' => 'multi')); echo $this->Html->input('Form[extras][fields][' . $fields_count . '][id]', array('type' => 'hidden', 'value' => 'multi-' . $fields_count)); echo $this->Html->input('Form[extras][fields][' . $fields_count . '][layout]', array('type' => 'hidden', 'value' => 'wide'));
function render_field_config() { if (!empty($this->data['form_id']) and !empty($this->data['field_id'])) { $k = $this->data['field_id']; $this->Form->id = $this->data['form_id']; $this->data = $this->Form->load(); $wizard_field = $this->data['Form']['extras']['fields'][$k]; $type = isset($wizard_field['render_type']) ? $wizard_field['render_type'] : $wizard_field['type']; $class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Fields\\' . \GCore\Libs\Str::camilize($type) . '\\' . \GCore\Libs\Str::camilize($type); ob_start(); $class::config($wizard_field, $k); $element_config = ob_get_clean(); $contents = str_replace('{N}', $k, $element_config); $contents = \GCore\Libs\Str::replacer($contents, \GCore\Libs\Request::raw(), array('escape' => true)); $contents = \GCore\Helpers\DataLoader::load($contents, \GCore\Libs\Request::raw()); echo $contents; } }
</div> </div> <?php } ?> </div> </div> <div id="droppable_area_actions" class="droppable col-md-10"> <?php if (empty($this->data['Form']['extras']['DNA'])) { $this->data['Form']['extras']['DNA'] = array('load' => array(), 'submit' => array()); } foreach ($this->data['Form']['extras']['DNA'] as $event => $info) { ?> <div class="form_event main_event good_event alert alert-success" id="FormOn<?php echo \GCore\Libs\Str::camilize($event); ?> Event"> <label class="form_event_label label label-success pull-left">On <?php echo $event; ?> </label> <?php if (!in_array($event, array('load', 'submit'))) { ?> <label class="form_event_delete_label label label-danger pull-right"><?php echo l_('CF_DELETE'); ?> </label> <?php }
function execute(&$form, $action_id) { $config = !empty($form->actions_config[$action_id]) ? $form->actions_config[$action_id] : array(); $config = new \GCore\Libs\Parameter($config); $doc = \GCore\Libs\Document::getInstance(); $form_id = 'chronoform-' . $form->form['Form']['title']; //$doc->_('forms'); //check fields validation /* if(!empty($form->form['Form']['extras']['fields'])){ $validations = array(); foreach($form->form['Form']['extras']['fields'] as $k => $field){ if(!empty($field['validation'])){ foreach($field['validation'] as $rule => $rule_data){ $validations[$rule][] = $field['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':'); } } if(!empty($field['inputs'])){ foreach($field['inputs'] as $fn => $field_input){ if(!empty($field_input['validation'])){ foreach($field_input['validation'] as $rule => $rule_data){ $validations[$rule][] = $field_input['name'].(strlen(trim($rule_data)) > 0 ? ':'.$rule_data : ':'); } } } } } foreach($validations as $rule => &$fields){ $fields = implode("\n", $fields); } $form->execute('client_validation', array('rules' => $validations)); } */ $theme = $form->params->get('theme', 'bootstrap3'); /*if($form->params->get('theme', 'bootstrap3') == 'bootstrap3'){ $theme = 'bootstrap3'; }else if($form->params->get('theme', 'bootstrap3') == 'bootstrap3_pure'){ $theme = 'bootstrap3_pure'; }else if($form->params->get('theme', 'bootstrap3') == 'semantic1'){ $theme = 'semantic1'; }else if($form->params->get('theme', 'bootstrap3') == 'gcoreui'){ $theme = 'gcoreui'; }else if($form->params->get('theme', 'bootstrap3') == 'none'){ $theme = 'none'; }*/ $doc->theme = $theme; \GCore\Helpers\Theme::getInstance(); if ($form->params->get('tight_layout', 0)) { $doc->addCssCode(' .gbs3 .gcore-form-row{margin-bottom:5px;} .gcore-form-row .gcore-line-td{margin:0;} '); } if ($form->params->get('rtl_support', 0)) { $doc->addCssCode(' #' . $form_id . '.chronoform{direction:rtl;} '); if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') { $doc->addCssCode(' #' . $form_id . ' .gcore-label-left{ float:right !important; min-width:160px; max-width:160px; padding-left:7px; text-align:right !important; } #' . $form_id . ' .gcore-label-top{ display:block; text-align:right !important; float:none !important; width:auto !important; } #' . $form_id . ' .gcore-form-row > .gcore-label-checkbox{ float:right !important; min-width:160px; padding-right:7px; padding-top: 1px !important; text-align:right !important; } #' . $form_id . ' .gcore-subinput-container{ float:right; } #' . $form_id . ' .gcore-multiple-column .gcore-checkbox-item, .gcore-multiple-column .gcore-radio-item{ float: right; } #' . $form_id . ' .gcore-multiple-column .gcore-checkbox-item:not(:first-child), .gcore-multiple-column .gcore-radio-item:not(:first-child){ padding-right: 5px; } '); } if ($form->params->get('theme', 'bootstrap3') == 'gcoreui') { $doc->addCssCode(' #' . $form_id . ' .gcore-label-left { min-width: 150px !important; max-width: 150px !important; display: inline-block; white-space: normal; float: right !important; padding: 1px; padding-right: 10px !important; font-weight: bold; } #' . $form_id . ' .gcore-input-container { float: right; overflow: auto; display: inline-block; white-space: normal; } #' . $form_id . ' .gcore-line-tr .gcore-input{ float:right; } #' . $form_id . ' .gcore-subinput-container { margin-bottom: 3px; overflow: auto; float: right; } #' . $form_id . ' .gcore-subinput-container:not(:first-child) { padding-right: 4px; } #' . $form_id . ' .gcore-subinput-container-wide { display: inline-block; margin: 0px 3px 3px 0px; float: right; overflow: auto; } #' . $form_id . ' .gcore-radio-item, #' . $form_id . ' .gcore-checkbox-item { float: right; margin: 0px 6px 6px 0px; white-space: nowrap; } #' . $form_id . ' .gcore-single-column .gcore-radio-item, #' . $form_id . ' .gcore-single-column .gcore-checkbox-item { clear: right; } '); } } if ($form->params->get('labels_right_aligned', 0)) { $doc->addCssCode(' #' . $form_id . ' .gcore-label-left{ text-align:' . ($form->params->get('rtl_support', 0) ? 'left' : 'right') . ' !important; } '); } if ($form->params->get('labels_auto_width', 0)) { $doc->addCssCode(' #' . $form_id . ' .gcore-label-left{ min-width: 0px !important; max-width: none !important; width: auto !important; } '); } if ($form->params->get('js_validation_language', '') == '') { $lang = strtolower(\GCore\Libs\Base::getConfig('site_language')); $js_lang_tag = explode('-', $lang); $form->params->set('js_validation_language', $js_lang_tag[0]); } $events_codes = array(); //check fields events if (!empty($form->form['Form']['extras']['fields'])) { //$events_codes = array(); $pageload_events_codes = array(); //$events_codes[] = 'jQuery(document).ready(function($){'; $events_codes[] = 'function chronoforms_fields_events(){'; foreach ($form->form['Form']['extras']['fields'] as $k => $field) { if (!empty($field['id']) and !empty($field['events'])) { if ($field['type'] == 'dropdown') { $change_event = 'change'; } else { $change_event = 'click'; } $_f = '$("[name=\'' . $field['name'] . '\']").on("' . $change_event . '", function(){'; $_l = '});'; $_m = array(); foreach ($field['events'] as $k => $event_data) { if (strlen($event_data['action']) and strlen($event_data['target'])) { $_m[] = $this->create_event($field, $event_data, $form); } } if (!empty($_m)) { $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l; $pageload_events_codes[] = implode("\n", $_m); } } if (!empty($field['inputs'])) { foreach ($field['inputs'] as $fn => $field_input) { if (!empty($field_input['id']) and !empty($field_input['events'])) { if ($field_input['type'] == 'dropdown') { $change_event = 'change'; } else { $change_event = 'click'; } $_f = '$("[name=\'' . $field_input['name'] . '\']").on("' . $change_event . '", function(){'; $_l = '});'; $_m = array(); foreach ($field_input['events'] as $k => $event_data) { if (strlen($event_data['action']) and strlen($event_data['target'])) { $_m[] = $this->create_event($field_input, $event_data, $form); } } if (!empty($_m)) { $events_codes[] = $_f . "\n" . implode("\n", $_m) . "\n" . $_l; $pageload_events_codes[] = implode("\n", $_m); } } } } } //check new fields events if (!empty($form->form['Form']['extras']['jsevents'])) { $jsevents_codes = array(); foreach ($form->form['Form']['extras']['jsevents'] as $k => $jsevent_info) { if (empty($jsevent_info['source'])) { continue; } //$source = $this->get_field_selector($jsevent_info['source'], $form); $target = !empty($jsevent_info['target']) ? $this->get_field_selector($jsevent_info['target'], $form) : ''; $event_trigger = $this->get_event_trigger($jsevent_info, $form); $type = $jsevent_info['type']; $jsevent_class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Events\\' . \GCore\Libs\Str::camilize($type) . '\\' . \GCore\Libs\Str::camilize($type); $jsevents_codes[] = str_replace('__FUNCTION__', $jsevent_class::output($target, $jsevent_info, $form), $event_trigger); } $events_codes = array_merge($events_codes, $jsevents_codes); } $events_codes[] = '}'; $events_codes[] = 'chronoforms_fields_events();'; $events_codes[] = 'function chronoforms_pageload_fields_events(){'; $events_codes[] = implode("\n", $pageload_events_codes); $events_codes[] = '}'; $events_codes[] = 'chronoforms_pageload_fields_events();'; //$form->execute('js', array('content' => implode("\n", $events_codes))); } ob_start(); eval('?>' . $form->form['Form']['content']); $output = ob_get_clean(); $form_content = $output; //select the page to display $form_pages = explode('<!--_CHRONOFORMS_PAGE_BREAK_-->', $output); $active_page_index = (int) $config->get('page', 1) - 1; $output = $form_pages[$active_page_index]; //get current url $current_url = \GCore\Libs\Url::current(); if ((bool) $config->get('relative_url', 1) === false) { $current_url = r_('index.php?ext=chronoforms'); } //generate <form tag $form_tag = '<form'; $form_action = strlen($config->get('action_url', '')) > 0 ? $config->get('action_url', '') : \GCore\Libs\Url::buildQuery($current_url, array('chronoform' => $form->form['Form']['title'], 'event' => $config->get('submit_event', 'submit'))); $form_tag .= ' action="' . r_($form_action, (bool) $config->get('xhtml_url', 0)) . '"'; //get method $form_method = $config->get('form_method', 'post'); if ($config->get('form_method', 'post') == 'file') { $form_tag .= ' enctype="multipart/form-data"'; $form_method = 'post'; } $form_tag .= ' method="' . $form_method . '"'; $form_tag .= ' name="' . $form->form['Form']['title'] . '"'; //$form_id = 'chronoform-'.$form->form['Form']['title']; $form_tag .= ' id="' . $form_id . '"'; $form_tag .= ' class="' . $config->get('form_class', 'chronoform') . ($theme == 'bootstrap3' ? ' form-horizontal' : '') . '"'; if ($config->get('form_tag_attach', '')) { $form_tag .= ' ' . trim($config->get('form_tag_attach', '')); } $form_tag .= '>'; if (empty($theme)) { $doc->_('forms'); } /* if($theme == 'bootstrap3'){ $doc->_('jquery'); $doc->_('bootstrap'); //echo '<div class="gcore chronoform-container">'; } */ $js_scripts = array(); if (strpos($output, 'data-wysiwyg="1"') !== false) { $doc->_('jquery'); $doc->_('editor'); $js_scripts[] = '$(\'*[data-wysiwyg="1"]\').each(function(){ tinymce.init({"selector":"#"+$(this).attr("id")}); });'; } if (strpos($form_content, 'validate[') !== false) { $doc->_('jquery'); $doc->_('gtooltip'); $doc->_('gvalidation', array('lang' => $form->params->get('js_validation_language', 'en'))); $js_scripts[] = '$("#' . $form_id . '").gvalidate();'; $js_scripts[] = ' $("#' . $form_id . '").find(":input").on("invalid.gvalidation", function(){ var field = $(this); if(field.is(":hidden")){ if(field.closest(".tab-pane").length > 0){ var tab_id = field.closest(".tab-pane").attr("id"); $(\'a[href="#\'+tab_id+\'"]\').closest(".nav").gtabs("get").show($(\'a[href="#\'+tab_id+\'"]\')); } if(field.closest(".panel-collapse").length > 0){ var slider_id = field.closest(".panel-collapse").attr("id"); $(\'a[href="#\'+slider_id+\'"]\').closest(".panel-group").gsliders("get").show($(\'a[href="#\'+slider_id+\'"]\')); } } if(field.data("wysiwyg") == "1"){ field.data("gvalidation-target", field.parent()); } }); $("#' . $form_id . '").on("success.gvalidation", function(e){ if($("#' . $form_id . '").data("gvalidate_success")){ var gvalidate_success = $("#' . $form_id . '").data("gvalidate_success"); if(gvalidate_success in window){ window[gvalidate_success](e, $("#' . $form_id . '")); } } }); $("#' . $form_id . '").on("fail.gvalidation", function(e){ if($("#' . $form_id . '").data("gvalidate_fail")){ var gvalidate_fail = $("#' . $form_id . '").data("gvalidate_fail"); if(gvalidate_fail in window){ window[gvalidate_fail](e, $("#' . $form_id . '")); } } }); '; if ($config->get('required_labels_identify', 1)) { if (strpos($form->params->get('theme', 'bootstrap3'), 'bootstrap3') !== false) { $required_icon = '<i class=\'fa fa-asterisk\' style=\'color:#ff0000; font-size:9px; vertical-align:top;\'></i>'; } else { $required_icon = '<span style=\'color:#ff0000; font-size:12px; vertical-align:top;\'>*</span>'; } $js_scripts[] = ' function chronoforms_validation_signs(formObj){ formObj.find(":input[class*=validate]").each(function(){ if($(this).attr("class").indexOf("required") >= 0 || $(this).attr("class").indexOf("group") >= 0){ var required_parent = []; if($(this).closest(".gcore-subinput-container").length > 0){ var required_parent = $(this).closest(".gcore-subinput-container"); }else if($(this).closest(".gcore-form-row, .form-group").length > 0){ var required_parent = $(this).closest(".gcore-form-row, .form-group"); } if(required_parent.length > 0){ var required_label = required_parent.find("label"); if(required_label.length > 0 && !required_label.first().hasClass("required_label")){ required_label.first().addClass("required_label"); required_label.first().html(required_label.first().html() + " ' . $required_icon . '"); } } } }); } chronoforms_validation_signs($("#chronoform-' . $form->form['Form']['title'] . '")); '; } } if (strpos($form_content, 'data-tooltip') !== false) { $doc->_('jquery'); $doc->_('gtooltip'); if (strpos($form->params->get('theme', 'bootstrap3'), 'bootstrap3') !== false) { $tip_icon = '<i class=\'fa fa-exclamation-circle input-tooltip\' style=\'color:#2693FF; padding-left:5px;\'></i>'; } else { $tip_icon = '<span style=\'color:#ff0000; font-size:12px; vertical-align:top;\'>!</span>'; } $js_scripts[] = ' function chronoforms_data_tooltip(formObj){ formObj.find(":input").each(function(){ if($(this).data("tooltip") && $(this).closest(".gcore-input, .gcore-input-wide").length > 0){ var tipped_parent = []; if($(this).closest(".gcore-subinput-container").length > 0){ var tipped_parent = $(this).closest(".gcore-subinput-container"); }else if($(this).closest(".gcore-form-row, .form-group").length > 0){ var tipped_parent = $(this).closest(".gcore-form-row, .form-group"); } if(tipped_parent.length > 0){ var tipped_label = tipped_parent.find("label"); if(tipped_label.length > 0 && !tipped_label.first().hasClass("tipped_label")){ tipped_label.first().addClass("tipped_label"); var $tip = $("' . $tip_icon . '"); $tip.data("content", $(this).data("tooltip")); tipped_label.first().append($tip); } } } }); formObj.find(".input-tooltip").gtooltip(); } chronoforms_data_tooltip($("#chronoform-' . $form->form['Form']['title'] . '")); '; } if (strpos($form_content, 'data-load-state') !== false) { $doc->_('jquery'); $js_scripts[] = ' function chronoforms_data_loadstate(formObj){ formObj.find(\':input[data-load-state="disabled"]\').prop("disabled", true); formObj.find(\'*[data-load-state="hidden"]\').css("display", "none"); formObj.find(\':input[data-load-state="hidden_parent"]\').each(function(){ if($(this).closest(".gcore-subinput-container").length > 0){ $(this).closest(".gcore-subinput-container").css("display", "none"); }else if($(this).closest(".gcore-form-row").length > 0){ $(this).closest(".gcore-form-row").css("display", "none"); } }); } chronoforms_data_loadstate($("#chronoform-' . $form->form['Form']['title'] . '")); '; } if (strpos($output, 'data-inputmask=') !== false) { $doc->_('jquery'); $doc->_('jquery.inputmask'); $js_scripts[] = '$(":input").inputmask();'; } if (strpos($output, 'data-gdatetimepicker') !== false or strpos($output, 'data-fieldtype="gdatetimepicker"') !== false) { $doc->_('jquery'); $doc->_('gdatetimepicker'); $js_scripts[] = ' $(\'*[data-gdatetimepicker-format]\').each(function(){ $(this).data("format", $(this).data("gdatetimepicker-format")); }); '; //for old data attributes $js_scripts[] = '$(\'*[data-gdatetimepicker="1"]\').gdatetimepicker();'; //for old data attributes $js_scripts[] = '$(\'*[data-fieldtype="gdatetimepicker"]\').gdatetimepicker();'; $js_scripts[] = ' $(":input").on("select_date.gdatetimepicker", function(){ if($(this).data("on_date_selected")){ var on_date_selected = $(this).data("on_date_selected"); if(on_date_selected in window){ window[on_date_selected]($(this)); } } }); '; } if (strpos($output, 'multiplier-container') !== false) { $doc->_('jquery'); $js_scripts[] = ' $(".multiplier-container").each(function(){ if(typeof($(this).data("hide_first")) != "undefined"){ $(this).find(".multiplier-contents").first().hide(); } if(typeof($(this).data("disable_first")) != "undefined"){ $(this).find(".multiplier-contents").first().find(":input").prop("disabled", true); } if($(this).find(".multiplier-contents").length > 1){ var counter = $(this).find(".multiplier-contents").length; $(this).data("count", counter); } }); $(".multiplier-container").find(".multiplier-add-button").on("click", function(){ var multiplier_container = $(this).closest(".multiplier-container"); var multiplier_clone = multiplier_container.find(".multiplier-contents").first().clone(); multiplier_clone.find(".multiplier-remove-button").first().css("display", ""); multiplier_clone.show(); multiplier_clone.find(":input").prop("disabled", false); if(typeof(multiplier_container.data("replacer")) != "undefined"){ var counter = parseInt(multiplier_container.data("count")); var multiplier_clone = multiplier_clone.wrap("<p>").parent().html().replace(new RegExp(multiplier_container.data("replacer"), "g"), counter); multiplier_container.data("count", counter + 1); } multiplier_container.find(".multiplier-contents").last().after(multiplier_clone); }); $(document).on("click", ".multiplier-remove-button", function(){ $(this).closest(".multiplier-contents").remove(); }); '; } if ((bool) $config->get('ajax_submit', 0) === true) { $doc->_('jquery'); $doc->_('gtooltip'); $doc->_('gvalidation', array('lang' => $form->params->get('js_validation_language', 'en'))); $ajax_url = \GCore\Libs\Url::buildQuery($form_action, array('tvout' => 'ajax')); $js_scripts[] = ' function chrono_ajax_submit(){ $(document).on("click", "#' . $form_id . ' :input[type=submit]", function(event){ $("#' . $form_id . '").append("<input type=\'hidden\' name=\'"+$(this).attr("name")+"\' value=\'"+$(this).val()+"\' />"); }); var files; $("input[type=file]").on("change", function(event){ files = event.target.files; }); $(document).on("submit", "#' . $form_id . '", function(event){ var overlay = $("<div/>").css({ "position": "fixed", "top": "0", "left": "0", "width": "100%", "height": "100%", "background-color": "#000", "filter": "alpha(opacity=50)", "-moz-opacity": "0.5", "-khtml-opacity": "0.5", "opacity": "0.5", "z-index": "10000", "background-image":"url(\\"' . \GCore\Helpers\Assets::image('loading-small.gif') . '\\")", "background-position":"center center", "background-repeat":"no-repeat", }); if(!$("#' . $form_id . '").hasClass("form-overlayed")){ $("#' . $form_id . '").append(overlay); $("#' . $form_id . '").addClass("form-overlayed"); } var form_action = $("#' . $form_id . '").prop("action"); var sep = (form_action.indexOf("?") > -1) ? "&" : "?"; var ajax_url = form_action + sep + "tvout=ajax"; //data processing $.ajax({ "type" : "POST", "url" : ajax_url, "data" : $("#' . $form_id . '").serialize(), "success" : function(res){ $("#' . $form_id . '").replaceWith(res); $("#' . $form_id . '").gvalidate(); chronoforms_fields_events(); chronoforms_validation_signs($("#' . $form_id . '")); chronoforms_data_tooltip($("#' . $form_id . '")); chronoforms_data_loadstate($("#' . $form_id . '")); if(typeof chronoforms_pageload_fields_events == "function"){ chronoforms_pageload_fields_events(); } //chrono_ajax_submit();//this line duplicates submissions, should be removed }, }); return false; }); } chrono_ajax_submit(); '; } $js_scripts[] = implode("\n", $events_codes); if (!empty($js_scripts)) { $doc->addJsCode('jQuery(document).ready(function($){ ' . implode("\n", $js_scripts) . ' });'); } if ((bool) $config->get('add_form_tags', 1) === true) { echo $form_tag; } //if ajax then display system messages inside the form if ((bool) $config->get('ajax_submit', 0) === true) { $doc = \GCore\Libs\Document::getInstance(); $doc->addCssFile('system_messages'); $session = \GCore\Libs\Base::getSession(); $types = $session->getFlash(); echo \GCore\Helpers\Message::render($types); } //add fields values $output = \GCore\Helpers\DataLoader::load($output, $form->data); $output = \GCore\Libs\Str::replacer($output, $form->data, array('repeater' => 'repeater')); //show output echo $output; if ((bool) $config->get('add_form_tags', 1) === true) { echo '</form>'; } }
<span class="caret"></span> </button> <ul class="dropdown-menu gdropdown" role="menu"> ' . $list . ' </ul> </div> '; } $form_errors = 0; $form_errors_list = array(); $form_warnings = 0; $form_warnings_list = array(); $actions = !empty($forms[$k]['Form']['extras']['DNA']) ? $this->DnaBuilder->get_actions($forms[$k]['Form']['extras']['DNA']) : array(); foreach ($actions as $id => $action) { $id = str_replace('_', '', $id); $action_class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Actions\\' . \GCore\Libs\Str::camilize($action) . '\\' . \GCore\Libs\Str::camilize($action); if (class_exists($action_class) and isset($action_class::$title)) { $action_class = new $action_class(); if (method_exists($action_class, 'config_check')) { $check_result = $action_class::config_check(!empty($forms[$k]['Form']['extras']['actions_config'][$id]) ? $forms[$k]['Form']['extras']['actions_config'][$id] : array()); foreach ($check_result as $text => $bool) { if ($bool === false) { $class = 'label-danger'; $icon_class = 'fa-times'; $form_errors++; $form_errors_list[] = $text; } else { if ($bool === -1) { $class = 'label-warning'; $icon_class = 'fa-exclamation'; $form_warnings++;
function index() { if (!empty($this->pmodel)) { $session = \GCore\Libs\Base::getSession(); $sessioned_string = trim($this->connection['Connection']['extras'][$this->area]['columns']['sessioned']); if (!empty($sessioned_string)) { $columns = explode("\n", $sessioned_string); $fields = array_map('trim', $columns); foreach ($fields as $k => $field) { $value = \GCore\Libs\Request::data($field, null); if (!is_null($value)) { $session->set($field, $value); } else { \GCore\Libs\Request::set($field, $session->get($field)); $this->data[$field] = $session->get($field); } } } $find_params = array(); $conditions = eval('?>' . $this->connection['Connection']['extras']['models']['conditions'][1]); $this->pmodel->conditions = is_array($conditions) ? $conditions : array(); if (!empty($this->connection['Connection']['extras']['models']['fields'][1])) { $find_params['fields'] = $this->_process_fields_list($this->connection['Connection']['extras']['models']['fields'][1]); } if (!empty($this->connection['Connection']['extras']['models']['order'][1])) { $this->pmodel->order_by = $this->_process_fields_list($this->connection['Connection']['extras']['models']['order'][1]); } if (!empty($this->connection['Connection']['extras']['models']['group'][1])) { //$find_params['group'] = array_map('trim', explode(',', $this->connection['Connection']['extras']['models']['group'][1])); $this->pmodel->group = $this->_process_fields_list($this->connection['Connection']['extras']['models']['group'][1]); } //sorting $this->sort_model = $this->pmodel; $this->_sortable(); //filtering $this->filter_model = $this->pmodel; $_f = function ($e) { $cs = explode(':', $e, 2); return trim($cs[0]); }; //filters $filters_fields = array(); $filters_string = trim($this->connection['Connection']['extras'][$this->area]['columns']['filters']); if (!empty($filters_string)) { $columns = explode("\n", $filters_string); $filters_fields = array_map($_f, $columns); } $this->_filter($filters_fields); //search $this->search_model = $this->pmodel; $searchable_fields = array(); $searchable_string = trim($this->connection['Connection']['extras'][$this->area]['columns']['searchable']); if (!empty($searchable_string)) { $columns = explode("\n", $searchable_string); $searchable_fields = array_map($_f, $columns); } $this->_search($searchable_fields); //paginating $this->paginate_model = $this->pmodel; $this->_paginate(); //find records list $rows = $this->pmodel->find('all', $find_params); //pr($rows); $this->set('rows', $rows); $this->set('connection', $this->connection); $this->set('area', $this->area); //add the correct display helper $helper = $this->connection['Connection']['extras'][$this->area]['display']['block']; $this->helpers[] = '\\GCore\\Admin\\Extensions\\Chronoconnectivity\\Blocks\\' . \GCore\Libs\Str::camilize($helper); $this->set('helper', \GCore\Libs\Str::camilize($helper)); $this->view = \GCore\C::ext_path('chronoconnectivity', 'admin') . 'views' . DS . 'lists' . DS . 'index.php'; } }
function translate($data = '') { $_f = function ($e) { $cs = explode('=', $e, 2); return array_map('trim', $cs); }; $site_lang = \GCore\Libs\Str::camilize(str_replace('-', '_', strtolower(\GCore\Libs\Base::getConfig('site_language')))); if (!empty($this->form['Form']['extras']['locales'])) { foreach ($this->form['Form']['extras']['locales'] as $l => $lang_data) { $tag = $lang_data['lang_tag']; $tag_cap = \GCore\Libs\Str::camilize($tag); if ($tag_cap == $site_lang) { $lines = explode("\n", $lang_data['strings']); $strings = array_map($_f, $lines); $texts = \GCore\Libs\Arr::getVal($strings, array('[n]', 0)); if (!empty($lang_data['strict'])) { $texts = array_map(function ($text) { return '[' . $text . ']'; }, $texts); } $locales = \GCore\Libs\Arr::getVal($strings, array('[n]', 1)); $data = str_replace($texts, $locales, $data); } } } return $data; }
<?php endif; ?> <?php endforeach; ?> </div> </div> </div> <?php endforeach; ?> </div> </div> <div id="droppable_area_actions" class="droppable col-md-10"> <?php if(empty($this->data['Form']['extras']['DNA'])){ $this->data['Form']['extras']['DNA'] = array('load' => array(), 'submit' => array()); } foreach($this->data['Form']['extras']['DNA'] as $event => $info): ?> <div class="form_event main_event good_event alert alert-success" id="FormOn<?php echo \GCore\Libs\Str::camilize($event); ?>Event"> <label class="form_event_label label label-success pull-left">On <?php echo $event; ?></label> <?php if(!in_array($event, array('load', 'submit'))): ?> <label class="form_event_delete_label label label-danger pull-right"><?php echo l_('CF_DELETE'); ?></label> <?php endif; ?> <div class="clearfix"></div> <input type="hidden" value="" class="events_dna" alt="ghost" name="Form[extras][DNA][<?php echo $event; ?>]"> <?php echo $this->DnaBuilder->build($info, 'Form[extras][DNA]['.$event.']', isset($this->data['Form']['extras']['actions_config']) ? $this->data['Form']['extras']['actions_config'] : array()); ?> </div> <?php endforeach; ?> <button type="button" class="btn btn-success" data-g-toggle="modal" data-g-target="#add_new_event" id="add_new_event_modal_toggler" onclick="jQuery('#add_new_event').css('top', jQuery(window).scrollTop());"> <?php echo l_('CF_ADD_NEW_EVENT'); ?> </button> <br> <!-- Modal --> <div class=" fade" id="add_new_event" tabindex="-1" role="dialog" aria-labelledby="Event_ModalLabel" aria-hidden="true" style="display:none; position:absolute; top:0; left:0; width:100%;">
function build_action_display($action, $events, $root, $configs) { $actions_output = array(); $pcs = explode('_', $action); $id = $pcs[count($pcs) - 1]; unset($pcs[count($pcs) - 1]); $name = implode('_', $pcs); $action_class = '\\GCore\\Admin\\Extensions\\Chronoforms\\Actions\\' . \GCore\Libs\Str::camilize($name) . '\\' . \GCore\Libs\Str::camilize($name); if (class_exists($action_class) and isset($action_class::$title)) { $action_class = new $action_class(); /* $actions_output[] = $action_label = \GCore\Helpers\Html::container('label', $action_class::$title.'<font style="color:#f00"> ('.$id.')</font>', array( 'class' => 'action_label' )); if(!empty($configs[$id]['action_label'])){ $actions_output[] = \GCore\Helpers\Html::container('label', '<font style="color:#888"> - '.$configs[$id]['action_label'].'</font>', array( 'class' => 'action_label' )); } */ $icons_code = '<span class="edit_icon action_icon label label-primary" title="Edit">Edit</span><span class="drag_icon action_icon label label-warning" title="Drag">Drag</span><span class="delete_icon action_icon label label-danger" title="Delete">Delete</span>'; $action_icons = \GCore\Helpers\Html::container('div', $icons_code, array('id' => 'action_icons_' . $id, 'class' => 'action_icons pull-right')); $action_title = '<div class="pull-left"><span class="form_action_label label label-primary">' . $action_class::$title . '</span><span style="" class="label label-info action_icon_number">' . $id . '</span></div>'; $actions_output[] = \GCore\Helpers\Html::container('div', $action_title . $action_icons . '<div class="clearfix"></div>', array('class' => 'panel-heading')); $action_dna = '<input type="hidden" name="' . $root . '[' . $action . ']" alt="ghost" class="events_dna" value="">'; $action_events = array(); if (!empty($events)) { foreach ($events as $event => $info) { $event_dna = '<input type="hidden" name="' . $root . '[' . $action . '][' . $event . ']" alt="ghost" class="events_dna" value="">'; if ($event == 'success' or isset($action_class->events_status[$event]) and $action_class->events_status[$event] == 'success') { $e_cl = 'good_event alert alert-success'; $label_class = 'form_event_label label label-success'; } else { if ($event == 'fail' or isset($action_class->events_status[$event]) and $action_class->events_status[$event] == 'fail') { $e_cl = 'bad_event alert alert-danger'; $label_class = 'form_event_label label label-danger'; } else { $e_cl = 'normal_event alert alert-info'; $label_class = 'form_event_label label label-info'; } } $event_label = \GCore\Helpers\Html::container('label', 'On ' . trim($event), array('class' => $label_class)); $event_container = \GCore\Helpers\Html::container('div', $event_label . $event_dna . $this->build($info, $root . '[' . $action . '][' . $event . ']'), array('id' => 'cfactionevent_' . $name . '_' . $id . '_' . $event, 'class' => 'form_event ' . $e_cl)); $action_events[] = $event_container; } } ob_start(); $action_class::config(); $action_config = ob_get_clean(); $action_config = str_replace('{N}', $id, $action_config); $body_contents = $action_dna . implode("\n", $action_events) . $action_config; if (empty($this->config)) { $body_contents = $action_dna . implode("\n", $action_events); } $actions_output[] = \GCore\Helpers\Html::container('div', $body_contents, array('class' => 'panel-body')); //$actions_output[] = $action_clear = '<div class="clear"> </div>'; $container = \GCore\Helpers\Html::container('div', implode("\n", $actions_output), array('id' => 'cfaction_' . $name . '_element_' . $id, 'class' => 'cfaction_' . $name . '_element_view wizard_element form_action panel panel-default', 'item_id' => $name)); return $container; } return ''; }