public static function on_editor_enable($id, $params = array()) { if (self::$settings->get('active_editor', 'tinymce') == 'tinymce') { $doc = \GCore\Libs\Document::getInstance(); //$params = array_merge(array('script_url' => \GCore\C::get('GCORE_FRONT_URL').'extensions/editors/assets/tinymce/tinymce.js'), $params); //$doc->addJsCode('jQuery(document).ready(function($){$("'.$id.'").tinymce('.stripslashes(json_encode($params)).');});'); $params = array_merge(array('selector' => $id), $params); $doc->addJsCode('jQuery(document).ready(function($){ tinymce.init(' . stripslashes(json_encode($params)) . '); });'); return true; } else { if (self::$settings->get('active_editor', 'tinymce') == 'ckeditor') { $doc = \GCore\Libs\Document::getInstance(); $doc->addJsCode('jQuery(document).ready(function($){CKEDITOR.replace("' . str_replace('#', '', $id) . '", ' . stripslashes(json_encode($params)) . ');});'); return true; } else { if (self::$settings->get('active_editor', 'tinymce') == 'sceditor') { $doc = \GCore\Libs\Document::getInstance(); $doc->addJsCode('jQuery(document).ready( function($){ $("' . $id . '").sceditor({ plugins: "bbcode", emoticonsRoot: "' . \GCore\C::get('GCORE_FRONT_URL') . 'extensions/editors/assets/sceditor/", style: "' . \GCore\C::get('GCORE_FRONT_URL') . 'extensions/editors/assets/sceditor/jquery.sceditor.default.min.css" }); } );'); return true; } } } }
public function display($connection, $area = 'front', $rows = array()) { $doc = \GCore\Libs\Document::getInstance(); //display header $custom_headers = array(); if (!empty(\GCore\Helpers\DataPresenter::$headers)) { foreach (\GCore\Helpers\DataPresenter::$headers as $k => $header) { $custom_headers[$k] = \GCore\Helpers\Html::container($header['tag'], $header['text'], $header['atts']); } } ob_start(); eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['header']); $header = ob_get_clean(); $header = $this->view->Lister->prepare($connection, $header); $header = \GCore\Libs\Str::replacer($header, $custom_headers, array('exploder' => '*')); echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($header, $rows)); //display rows foreach ($rows as $c_r_k => $row) { ob_start(); eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['body']); $body = ob_get_clean(); if (isset(\GCore\Helpers\DataPresenter::$cells_data[$c_r_k])) { $body = \GCore\Libs\Str::replacer($body, \GCore\Helpers\DataPresenter::$cells_data[$c_r_k], array('exploder' => '*')); } echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($body, $row)); } //display footer ob_start(); eval('?>' . $connection['Connection']['extras'][$area]['blocks']['custom']['footer']); $footer = ob_get_clean(); $footer = $this->view->Lister->prepare($connection, $footer); $footer = \GCore\Libs\Str::replacer($footer, $custom_headers, array('exploder' => '*')); echo $this->view->Lister->translate($connection, \GCore\Libs\Str::replacer($footer, $rows)); }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $config = new \GCore\Libs\Parameter($config); $recaptcha_load = '<div class="g-recaptcha" data-sitekey="' . $config->get('site_key') . '"></div>'; $doc = \GCore\Libs\Document::getInstance(); $doc->addJsFile('https://www.google.com/recaptcha/api.js'); //replace the string $form->form['Form']['content'] = str_replace('{ReCaptcha}', $recaptcha_load, $form->form['Form']['content']); }
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(); $ajax_url = $config->get('results_event', '') ? r_(\GCore\C::get('GCORE_ROOT_URL') . 'index.php?ext=chronoforms&chronoform=' . $form->form['Form']['title'] . '&event=' . $config->get('results_event', '') . '&tvout=ajax') : $config->get('results_url', ''); $doc->_('jquery'); //$doc->_('autocompleter'); //$doc->__('autocompleter', $config->get('field_selector', '.auto_complete'), array('path' => $ajax_url, 'length' => $config->get('length', 2), 'multiple' => $config->get('multiple', 0))); $doc->_('select2'); $doc->addJsCode(' jQuery(document).ready(function($){ $("' . $config->get('field_selector', '') . '").select2( { minimumInputLength: ' . $config->get('length', 2) . ', containerCss:{"min-width":"200px"}, width: "element", multiple: ' . ($config->get('multiple', 0) ? 'true' : 'false') . ', //tags: true, tokenSeparators: [","," "], ajax:{ url: "' . $ajax_url . '", dataType: "json", data: function (term, page){ return { ' . $config->get('field_name', 'tag') . ': term, }; }, results: function (data, page){ return {results: data}; } }, formatNoMatches: "' . $config->get('no_matches_msg', 'Error!!') . '", formatSearching: "' . $config->get('searching_msg', 'Loading....') . '", formatAjaxError: "' . $config->get('ajax_error_msg', 'Loading failed....') . '", ' . ($config->get('multiple', 0) ? ' initSelection: function(element, callback){ var data = []; $(element.val().split(",")).each(function (){ data.push({id: this, text: this}); }); callback(data); } ' : ' initSelection: function(element, callback){ var data = {"id": $(element).val(), "text": $(element).val()}; callback(data); } ') . ' } ); });'); }
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(); $ajax_url = $config->get('results_event', '') ? r_(\GCore\C::get('GCORE_ROOT_URL') . 'index.php?ext=chronoforms&chronoform=' . $form->form['Form']['title'] . '&event=' . $config->get('results_event', '') . '&tvout=ajax') : $config->get('results_url', ''); if ((bool) $form->params->get('jquery', 1) === true) { $doc->_('jquery'); } $doc->_('autocompleter'); $doc->__('autocompleter', $config->get('field_selector', '.auto_complete'), array('path' => $ajax_url, 'length' => $config->get('length', 2), 'multiple' => $config->get('multiple', 0))); }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $config = new \GCore\Libs\Parameter($config); $field = $config->get('field', ''); $data_path = $config->get('data_path', ''); $value = $config->get('value_key', 'value'); $prepend = $config->get('prepend_value', true); $text = $config->get('text_key', 'text'); $level = $config->get('level_key', ''); $labels = $config->get('labels', 'L1,L2,L3,L4'); $limit = $config->get('limit', 999); $placeholder = $config->get('placeholder', 'Procurar...'); $res = array(); if (!empty($field) && !empty($data_path) && !empty($text) && !empty($value)) { $treeList = self::mount_tree($form->data[$data_path], $value, $prepend, $text, $level); self::mount_list($treeList, explode(',', $labels), $value, $text, $res); $list = implode("\n", $res); $clean_attrbs = array('type' => 'button', 'value' => 'Limpar', 'id' => 'limpar'); $search_attrbs = array('type' => 'text', 'name' => 'busca', 'id' => 'busca', 'placeholder' => $placeholder, 'size' => '20'); $clean = \GCore\Helpers\Html::_concat($clean_attrbs, array_keys($clean_attrbs), '<input ', ' />'); $search = \GCore\Helpers\Html::_concat($search_attrbs, array_keys($search_attrbs), '<input ', ' />'); $arvore = '<div id="arvore">' . $list . '</div>'; $c_busca = \GCore\Helpers\Html::container('div', $search . $clean, array('id' => 'c_busca')); $modal_div = \GCore\Helpers\Html::container('div', $c_busca . $arvore, array('id' => 'modal_arvore', 'style' => array('display' => 'none'))); $doc = \GCore\Libs\Document::getInstance(); $doc->addCssFile('vendors/vakata-jstree/themes/default/style.min.css'); $doc->addCssFile('vendors/jquery-ui-1.11.4/jquery-ui.min.css'); $doc->addJsFile('vendors/vakata-jstree/jstree.min.js'); $doc->addJsFile('vendors/jquery-ui-1.11.4/jquery-ui.min.js'); $fieldKey = $this->getFieldKey($form->form['Form']['extras']['fields'], $field); $campo = $form->form['Form']['extras']['fields'][$fieldKey]; $condicoes = $config->get('conditions', ""); if (!empty($condicoes)) { $condicoes = explode("\n", $condicoes); foreach ($condicoes as $condicao) { $condicao = explode("::", $condicao); // $condicao[0]: Condição; $condicao[1]: Mensagem $elseifs = ' else if (' . $condicao[0] . ')' . '{ alert("' . $condicao[1] . '"); event.preventDefault(); return false; }'; } } else { $elseifs = ''; } $opcoes = array('{field}' => $field, '{fieldID}' => $campo['id'], '{label}' => $campo['label']['text'], '{limit}' => empty($limit) || is_null($limit) ? 999 : $limit, '{condicoes}' => $elseifs); $doc->addJsCode($this->get_script($opcoes)); $doc->addCssCode($this->get_style($campo['id'])); $form->form['Form']['content'] = str_replace('<div id="modal_tree" style="display: none;"></div>', $modal_div, $form->form['Form']['content']); } // echo 'Field name: ' . $field . '<br/>'; // echo 'Chave: ' . array_search($field, array_column($form->form['Form']['extras']['fields'], 'name')); }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $config = new \GCore\Libs\Parameter($config); if (!defined('RECAPTCHA_API_SERVER')) { define('RECAPTCHA_API_SERVER', $config->get('api_server')); } if (!defined('RECAPTCHA_API_SECURE_SERVER')) { define('RECAPTCHA_API_SECURE_SERVER', $config->get('api_secure_server')); } $recaptcha_load = "<div id='recaptcha'>" . $this->recaptcha_get_html($config->get('public_key'), null, (bool) $config->get('ssl_server')) . "</div>"; $script = "\n\tvar RecaptchaOptions = {\n\t\ttheme : '" . $config->get('theme', 'red') . "',\n\t\tlang : '" . $config->get('lang', 'en') . "'\n\t};\n \t\t"; $doc = \GCore\Libs\Document::getInstance(); $doc->addJsCode($script); //add CSS fix to the recaptcha input field $doc->addCssCode('label.recaptcha_input_area_text{line-height: 12px !important;}'); //replace the string $form->form['Form']['content'] = str_replace('{ReCaptcha}', $recaptcha_load, $form->form['Form']['content']); }
public static function render($types = array()) { if (!empty($types)) { //add the system css file $doc = \GCore\Libs\Document::getInstance(); $doc->addCssFile('system_messages'); $system_messages = array(); foreach ($types as $type => $messages) { $list = array(); $messages = \GCore\Libs\Arr::normalize($messages); foreach ($messages as $message) { $list[] = \GCore\Helpers\Html::container('li', $message, array()); } $ul = \GCore\Helpers\Html::container('ul', implode("\n", $list), array()); $system_messages[] = self::wrap($ul, $type); } $system_messages_container = \GCore\Helpers\Html::container('div', implode("\n", $system_messages), array('class' => 'system-message-container')); return $system_messages_container; } return ''; }
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(); $doc->_('jquery'); $doc->addJsFile(\GCore\C::ext_url('chronoforms', 'admin') . 'actions/load_signature_pad/signature_pad.min.js'); $doc->addJsCode(' jQuery(document).ready(function($){ var wrapper = $("canvas").closest(".m-signature-pad"), clearButton = wrapper.find("[data-action=clear]"), saveButton = wrapper.find("[data-action=save]"), canvas = wrapper.find("canvas").get(0), signaturePad; function resizeCanvas() { var ratio = window.devicePixelRatio || 1; canvas.width = canvas.offsetWidth * ratio; canvas.height = canvas.offsetHeight * ratio; canvas.getContext("2d").scale(ratio, ratio); } window.onresize = resizeCanvas; resizeCanvas(); signaturePad = new SignaturePad(canvas, { "onEnd": function(){ wrapper.find("input[type=hidden]").val(signaturePad.toDataURL()); }, }); clearButton.on("click", function (event) { signaturePad.clear(); }); if(wrapper.find("input[type=hidden]").val()){ signaturePad.fromDataURL(wrapper.find("input[type=hidden]").val()); } });'); }
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 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(); ob_start(); eval('?>' . $config->get('files', '')); $files_lines = ob_get_clean(); if (strlen(trim($files_lines)) > 0) { $files = explode("\n", $files_lines); foreach ($files as $file) { //add file $doc->addCssFile(trim($file)); } } ob_start(); eval('?>' . $config->get('content', '')); $output = ob_get_clean(); //add code if (strlen(trim($output)) > 0) { $doc->addCssCode($output); } }
public function display($connection, $area = 'front', $rows = array()) { $doc = \GCore\Libs\Document::getInstance(); $tds = array(); $trs = array(); $ths = array(); //display header ob_start(); eval('?>' . $connection['Connection']['extras'][$area]['blocks']['table']['header']); $header = ob_get_clean(); $header = $this->view->Lister->translate($connection, $this->view->Lister->prepare($connection, $header)); echo \GCore\Libs\Str::replacer($header, $rows); $thead = \GCore\Helpers\Html::container('thead', implode("\n", $ths), array()); $tbody = \GCore\Helpers\Html::container('tbody', implode("\n", $trs), array()); if (!empty(\GCore\Helpers\DataPresenter::$columns)) { //\GCore\Helpers\DataPresenter::set_cells_data(); $trs = \GCore\Helpers\DataTable::trs(); $tbody = \GCore\Helpers\Html::container('tbody', implode("\n", $trs), array()); foreach (\GCore\Helpers\DataPresenter::$headers as $k => $header) { $th_tag = \GCore\Helpers\Html::container($header['tag'], $header['text'], $header['atts']); $ths[] = \GCore\Helpers\Html::container('th', $th_tag, array('class' => 'th-' . $k)); } $thead = \GCore\Helpers\Html::container('thead', \GCore\Helpers\Html::container('tr', implode("\n", $ths)), array()); } $table = \GCore\Helpers\Html::container('table', $thead . $tbody, array('class' => 'table table-hover table-censored', 'id' => 'gcore_table_list__#')); $table = \GCore\Helpers\DataLoader::load($table, \GCore\Helpers\DataPresenter::$cells_data); \GCore\Helpers\DataPresenter::_flush(); //show table echo $this->view->Lister->translate($connection, $table); //display footer ob_start(); eval('?>' . $connection['Connection']['extras'][$area]['blocks']['table']['footer']); $footer = ob_get_clean(); $footer = $this->view->Lister->translate($connection, $this->view->Lister->prepare($connection, $footer)); echo \GCore\Libs\Str::replacer($footer, $rows); //echo '</div>'; }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $config = new \GCore\Libs\Parameter($config); $session = \GCore\Libs\Base::getSession(); //extract questions $field_name = \GCore\Libs\Str::rand(); $session_key = $config->get('session_key', ''); if (empty($session_key)) { $session_key = $form->form['Form']['title']; } $session->set('chrono_honeypot_' . $session_key, array('name' => $field_name, 'time' => time())); $field_code = \GCore\Helpers\Html::input($field_name, array('type' => 'hidden', 'value' => 1)); if ($config->get('method', 'static') == 'static') { $form->form['Form']['content'] = $form->form['Form']['content'] . $field_code; } else { $doc = \GCore\Libs\Document::getInstance(); $doc->addJsCode(' jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").append(\'' . $field_code . '\'); }); '); } }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $config = new \GCore\Libs\Parameter($config); $failed = false; $failed_fields = array(); foreach ($config->get('rules') as $rule => $data) { if (!empty($data)) { $fields = explode("\n", $data); foreach ($fields as $field) { $fch = explode(':', $field); if (count($fch)) { if (!in_array($rule, array('not_empty', 'is_empty')) and strlen((string) $form->data($fch[0])) == 0) { continue; } $valid = \GCore\Libs\Validate::$rule($form->data($fch[0])); if (!$valid) { $failed = true; if ($config->get('display_errors_top', 1)) { $form->errors[] = $failed_fields[trim($fch[0])] = isset($fch[1]) ? trim($fch[1]) : $config->get('default_error', 'Error occurred.'); } else { $failed_fields[trim($fch[0])] = isset($fch[1]) ? trim($fch[1]) : $config->get('default_error', 'Error occurred.'); } } } } } } if ($config->get('highlight_fields', 1) and !empty($failed_fields)) { $doc = \GCore\Libs\Document::getInstance(); $doc->_('jquery'); $doc->_('gtooltip'); $doc->_('gvalidation'); $doc->addCssCode(' .custom_server_validation_error{ background-color:red; color:#fff; display:block; padding:3px; font-size:12px; line-height:13px; margin-top:3px; border-radius:3px; } '); $form_id = 'chronoform-' . $form->form['Form']['title']; $sts = array(); foreach ($failed_fields as $failed_field => $error) { $sts[] = 'jQuery("#' . $form_id . ' :input[name^=' . $failed_field . ']").closest(".gcore-input").append("<span class=\\"custom_server_validation_error\\">' . $error . '</span>");'; } $doc->addJsCode(' jQuery(document).ready(function(){ ' . implode("\n", $sts) . ' }); '); } if ($failed) { $this->events['fail'] = 1; } else { $this->events['success'] = 1; } }
public static function getHeader() { $doc = \GCore\Libs\Document::getInstance(); static $used; if (!isset($used)) { $used = array(); } $chunks = array(); /*$chunks[] = ' <script type="text/javascript"> if("undefined"==typeof window.jQuery){}else{ var gcore_jQuery_bak = window.jQuery; var gcore_$_bak = window.$; } if("undefined"==typeof gcore_jQuery){}else{ window.jQuery = gcore_jQuery; window.$ = gcore_$; } </script> ';*/ /*$JDocument = \JFactory::getDocument(); if(!method_exists($JDocument, 'addCustomTag')){ return; }*/ //add css files list foreach ($doc->cssfiles as $k => $cssfile) { if (empty($used['cssfiles'][$k])) { $used['cssfiles'][$k] = true; $cssfile['href'] = \GCore\C::fix_urls($cssfile['href']); $chunks[] = \GCore\Helpers\Html::_concat($cssfile, array_keys($cssfile), '<link ', ' />'); //$JDocument->addStyleSheet(\GCore\C::fix_urls($cssfile['href'])); } } //add css code list foreach ($doc->csscodes as $media => $codes) { $chunks[] = \GCore\Helpers\Html::container('style', implode("\n", $codes), array('type' => 'text/css', 'media' => $media)); //$JDocument->addStyleDeclaration(implode("\n", $codes)); foreach ($doc->csscodes[$media] as $k => $code) { unset($doc->csscodes[$media][$k]); } } //add js files list foreach ($doc->jsfiles as $k => $jsfile) { /*if(strpos($jsfile['src'], 'jquery.js') !== false){ $document = \JFactory::getDocument(); $document->addScript($jsfile['src']); continue; }*/ if (empty($used['jsfiles'][$k])) { $used['jsfiles'][$k] = true; $jsfile['src'] = \GCore\C::fix_urls($jsfile['src']); $chunks[] = \GCore\Helpers\Html::_concat($jsfile, array_keys($jsfile), '<script ', '></script>'); } } //add js code list foreach ($doc->jscodes as $type => $codes) { $chunks[] = \GCore\Helpers\Html::container('script', implode("\n", $codes), array('type' => $type)); foreach ($doc->jscodes[$type] as $k => $code) { unset($doc->jscodes[$type][$k]); } } foreach ($doc->headertags as $k => $code) { $chunks[] = $code; unset($doc->headertags[$k]); } /*$chunks[] = ' <script type="text/javascript"> if("undefined"==typeof gcore_jQuery){ var gcore_jQuery = window.jQuery; var gcore_$ = window.$; } if("undefined"==typeof gcore_jQuery_bak){}else{ window.jQuery = gcore_jQuery_bak; window.$ = gcore_$_bak; } </script> ';*/ $header = implode("\n", array_filter($chunks)); //$JDocument->addCustomTag(\GCore\C::fix_urls($header)); return \GCore\C::fix_urls($header); //return implode("\n", array_filter($chunks)); }
<?php /* @copyright:ChronoEngine.com @license:GPLv2 */ defined('_JEXEC') or die('Restricted access'); defined("GCORE_SITE") or die; $doc = \GCore\Libs\Document::getInstance(); $doc->_('jquery'); $doc->_('jquery-ui'); $doc->_('forms'); $doc->__('tabs', '#details-panel'); $this->Toolbar->addButton('save', 'index.php?ext=editors&act=save_settings', l_('SAVE'), $this->Assets->image('save', 'toolbar/')); ?> <form action="index.php?ext=editors&act=save_settings" method="post" name="admin_form" id="admin_form"> <div id="details-panel"> <ul> <li><a href="#general"><?php echo l_('GENERAL'); ?> </a></li> </ul> <div id="general"> <?php echo $this->Html->formStart(); ?> <?php echo $this->Html->formSecStart(); ?> <?php echo $this->Html->formLine('Editors[active_editor]', array('type' => 'dropdown', 'label' => l_('EDITORS_ACTIVE_EDITOR'), 'values' => array('tinymce'), 'options' => array('' => 'GCore Editor - Default', 'tinymce' => 'TinyMCE', 'ckeditor' => 'CKEditor'))); ?> <?php
public static function loadFiles() { $doc = \GCore\Libs\Document::getInstance(); $doc->_('jquery'); $doc->addJsFile(\GCore\Helpers\Assets::js('toolbar', '')); $doc->addCssFile(\GCore\Helpers\Assets::css('toolbar', '')); }
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); }
function __construct() { $doc = \GCore\Libs\Document::getInstance(); $doc->_('jquery'); $doc->_('gcore-ui'); }
public static function call($site, $extension, $controller = '', $action = '', $params = array()) { if (!empty($params['_app_thread'])) { $thread = $params['_app_thread']; } else { $thread = 'x_core_' . rand(); } $x_app = self::getInstance($site, $thread); $x_app->extension = $extension; $x_app->controller = $controller; $x_app->action = $action; $x_app->set($params); $x_app->dispatch(true); $tvout = strlen(\GCore\Libs\Request::data('tvout', null)) > 0 ? \GCore\Libs\Request::data('tvout') : ''; if ($tvout != 'ajax' and GCORE_SITE == 'admin') { $doc = \GCore\Libs\Document::getInstance(); $doc->addCssFile('joomla_fixes'); } return $x_app->buffer; }
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(); //$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 = ''; if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') { $theme = 'bootstrap3'; } 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;} '); } //check fields events if (!empty($form->form['Form']['extras']['fields'])) { $events_codes = array(); $events_codes[] = 'jQuery(document).ready(function($){'; 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; } } 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; } } } } } $events_codes[] = '});'; if ((bool) $form->params->get('jquery', 1) === true) { $doc->_('jquery'); } $form->execute('js', array('content' => implode("\n", $events_codes))); } ob_start(); eval('?>' . $form->form['Form']['content']); $output = ob_get_clean(); //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) . '"'; //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 .= $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">'; } */ if (strpos($output, 'data-wysiwyg="1"') !== false) { $doc->_('jquery'); $doc->_('editor'); $doc->addJsCode('jQuery(document).ready(function($){ $(\'*[data-wysiwyg="1"]\').each(function(){ tinymce.init({"selector":"#"+$(this).attr("id")}); }); });'); } if (strpos($output, 'validate[') !== false) { $doc->_('jquery'); $doc->_('gvalidation'); $doc->addJsCode('jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").gvalidate(); });'); if ($config->get('required_labels_identify', 1)) { if ($form->params->get('theme', 'bootstrap3') == 'bootstrap3') { $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>'; } $doc->addJsCode('jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").find(":input[class*=validate]").each(function(){ if($(this).attr("class").indexOf("required") >= 0 || $(this).attr("class").indexOf("group") >= 0){ if($(this).closest(".gcore-subinput-container").length > 0){ var required_parent = $(this).closest(".gcore-subinput-container"); }else if($(this).closest(".gcore-form-row").length > 0){ var required_parent = $(this).closest(".gcore-form-row"); } 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 . '"); } } } }); });'); } } if (strpos($output, 'data-tooltip') !== false) { $doc->_('jquery'); $doc->_('gtooltip'); $doc->addJsCode('jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").find(":input").each(function(){ if($(this).data("tooltip") && $(this).closest(".gcore-input").length > 0 && $(this).closest(".gcore-input").next(".input-tooltip").length < 1){ var $tip = $(\'<i class="fa fa-exclamation-circle input-tooltip" style="float:left; padding:7px 0px 0px 7px;"></i>\').attr("title", $(this).data("tooltip")); $(this).closest(".gcore-input").after($tip); } }); $("#chronoform-' . $form->form['Form']['title'] . ' .input-tooltip").gtooltip("hover"); });'); } if (strpos($output, 'data-load-state') !== false) { $doc->_('jquery'); $doc->addJsCode('jQuery(document).ready(function($){ $("#chronoform-' . $form->form['Form']['title'] . '").find(\':input[data-load-state="disabled"]\').prop("disabled", true); $("#chronoform-' . $form->form['Form']['title'] . '").find(\':input[data-load-state="hidden"]\').css("display", "none"); $("#chronoform-' . $form->form['Form']['title'] . '").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"); } }); });'); } if (strpos($output, 'data-inputmask=') !== false) { $doc->_('jquery'); $doc->_('jquery.inputmask'); $doc->addJsCode('jQuery(document).ready(function($){ $(":input").inputmask(); });'); } if (strpos($output, 'data-gdatetimepicker') !== false) { $doc->_('jquery'); $doc->_('gdatetimepicker'); $doc->addJsCode('jQuery(document).ready(function($){ $(\'*[data-gdatetimepicker="1"]\').gdatetimepicker(); });'); } if ((bool) $config->get('ajax_submit', 0) === true) { $doc->_('jquery'); $ajax_url = \GCore\Libs\Url::buildQuery($form_action, array('tvout' => 'ajax')); $doc->addJsCode(' jQuery(document).ready(function($){ function chrono_ajax_submit(){ $("#' . $form_id . '").submit(function(){ 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", }); $("#' . $form_id . '").append(overlay); $.ajax({ "type" : "POST", "url" : "' . r_($ajax_url) . '", "data" : $("#' . $form_id . '").serialize(), "success" : function(res){ $("#' . $form_id . '").replaceWith(res); chrono_ajax_submit(); }, }); return false; }); } chrono_ajax_submit(); }); '); } 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); //show output echo $output; echo '</form>'; /*if($theme == 'bootstrap3'){ echo '</div>'; }*/ }
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>'; } }
public function getNav($lang = array()) { if ($this->total <= $this->limit) { return ''; } $first = $this->getFirst($lang); $prev = $this->getPrevious($lang); $numbers = $this->getNumbers($lang); $next = $this->getNext($lang); $last = $this->getLast($lang); $full = $this->full_nav($first, $prev, $numbers, $next, $last); //add css file $doc = \GCore\Libs\Document::getInstance(); $doc->addCssFile(\GCore\Helpers\Assets::css('paginator')); return $full; }
function execute(&$form, $action_id) { $config = $form->actions_config[$action_id]; $rules = array(); $messages = array(); foreach ($config['rules'] as $rule => $data) { if (!empty($data)) { $fields = explode("\n", $data); foreach ($fields as $field) { $fch = explode(':', $field); $rules[trim($fch[0])][$rule] = true; if (isset($fch[1])) { $rules[trim($fch[0])][$rule] = trim($fch[1]); if ($fch[1] == '') { unset($rules[trim($fch[0])][$rule]); } } } } } //pr($rules); if (!empty($rules)) { $doc = \GCore\Libs\Document::getInstance(); if ((bool) $form->params->get('jquery', 1) === true) { $doc->_('jquery'); } $js_code = ' jQuery(document).ready(function($){ '; foreach ($rules as $fld => $ls) { $validations = 'validate["' . implode('","', array_keys($ls)) . '"]'; $js_code .= '$("#chronoform-' . $form->form['Form']['title'] . '").find(":input[name=\'' . $fld . '\']").addClass(\'' . $validations . '\');'; } $js_code .= ' $("#chronoform-' . $form->form['Form']['title'] . '").gvalidate({}); }); '; //$doc->_('jquery.validate'); /*$js_code = ' jQuery(document).ready(function($){ $("#chronoform-'.$form->form['Form']['title'].'").validate({ errorClass: "gform-error", validClass: "gform-valid", errorPlacement: function(error, element){ error.appendTo(element.closest(".gform-input-container")); }, highlight: function(element, errorClass, validClass){ $(element).closest(".gform-line-td").addClass("gform-line-td-error"); }, unhighlight: function(element, errorClass, validClass){ $(element).closest(".gform-line-td").removeClass("gform-line-td-error"); }, rules: {'."\n"; foreach($rules as $fld => $ls){ $compound_rules = array(); $compound_rules[] = " ".'"'.$fld.'" : {'; $single_rules = array(); foreach($ls as $l => $v){ $single_rules[] = ' '.$l.' : '.(string)$v; } $compound_rules[] = implode(",\n", $single_rules); $compound_rules[] = ' }'; $js_code .= implode("\n", $compound_rules).",\n"; } $js_code .= ' } }); }); ';*/ $doc->addJsCode($js_code); } }