function fetchElement($name, $value, &$node, $control_name) { if ($node['secret'] && !JRequest::getBool($node['secret'])) { return null; } $order = $node['order'] == 'after' ? 'after' : 'before'; $label = $node['label'] ? $node['label'] : 'Layout Parameters'; $doc =& JFactory::getDocument(); $style = "\n\t\t#{$control_name}{$name}-tabs {\n\t\t\tborder-top-width: 0px;\n\t\t\tborder-right-width: 0px;\n\t\t\tborder-bottom-width: 0px;\n\t\t\tborder-left-width: 0px;\n\t\t}"; $doc->addStyleDeclaration($style); $id = JRequest::getInt('id'); if (!$id) { $id = reset(JRequest::getVar('cid', array())); } $db =& JFactory::getDBO(); $query = 'SELECT params' . ' FROM #__modules' . ' WHERE id =' . $id; $db->setQuery($query); $values = $db->loadResult(); //Get the module name, in a slightly hacky way. $module = JRequest::getWord('module'); $mod =& JTable::getInstance('Module', 'JTable'); if ($id) { $mod->load($id); $modname = $mod->module; } elseif ($module) { $modname = $module; } nimport('napi.html.parameter'); $load = new NParameter($values, JPATH_ROOT . DS . 'modules' . DS . $modname . DS . $modname . '.xml'); if (!$node->children()) { $content = $load->renderFieldset('params', $value, $node['suffix']); $container = $node['panel'] ? "\n\t\t\t<div id='{$control_name}{$name}' class='panel ui-widget ui-widget-content'>\n\t\t\t\t<h3 class='title jpane-toggler' id='{$name}-page'>\n\t\t\t\t\t<span>" . JFilterOutput::ampReplace($label) . "</span>\n\t\t\t\t</h3>\n\t\t\t\t<div class='jpane-slider ui-widget-content content' style='background:transparent;'>{$content}</div>\n\t\t\t</div>" : " <div id='{$control_name}{$name}'>{$content}</div>"; $script = "\n\t\t\t\tjQuery.noConflict();\n\t \n\t\t\t\tjQuery(document).ready(function(\$){\n\t\t\t\t\t\$('#{$control_name}{$name}').closest('.pane-sliders > .panel').{$order}(\$('#{$control_name}{$name}'));\n\t\t\t\t});\n\t\t\t\t"; $doc->addScriptDeclaration($script); } else { $content = null; $panel = null; $title = null; $container = $node['panel'] ? " <div id='{$control_name}{$name}' class='panel ui-widget ui-widget-content'>" : " <div id='{$control_name}{$name}'>"; $opt['useCookie'] = $node['cookie'] ? '\'' . $node['cookie'] . '\'' : null; JHTML::script('tabs.js'); $panel .= JPaneTabs::startPane($control_name . $name . 'tabs'); foreach ($node->children() as $group) { $content = $load->renderFieldset('params', $group['value'], $node['suffix']); $title .= $node['panel'] ? ' <span>' . JFilterOutput::ampReplace($group->data()) . '</span>' : JFilterOutput::ampReplace($group->data()); $panel .= $node['panel'] ? JPaneTabs::startPanel(JFilterOutput::ampReplace($group->data()), $group['value']) . $content . JPaneTabs::endPanel() : $content; } $panel .= JPaneTabs::endPane(); $container .= $node['panel'] ? '<h3 class="title jpane-toggler" id="' . $value . '-page"><span>' . JFilterOutput::ampReplace($label) . '</span></h3> <div class="jpane-slider jpane-current ui-widget-content content" style="background:transparent;">' . $panel . '</div> </div>' : $panel . '</div>'; JHTML::script('accordion.fix.js', 'media/napi/js/'); JHTML::script('tabs.fix.js', 'media/napi/js/'); $script = "\n\t\tjQuery.noConflict();\n \n\t\tjQuery(document).ready(function(\$){\n\t\t\t\$('#{$control_name}{$name}').closest('.pane-sliders > .panel').{$order}(\$('#{$control_name}{$name}'));\n\t\t});"; $doc->addScriptDeclaration($script); $doc->addStyleDeclaration('.jpane-current div.current { padding: 0px 0px; border-width:0px; border-top-width:1px;}'); } return $container; }
function fetchElement($name, $value, &$node, $control_name) { if ($node['secret'] && !JRequest::getBool($node['secret'])) { return null; } $order = $node['order'] == 'after' ? 'after' : 'before'; $label = $node['label'] ? $node['label'] : 'Layout Parameters'; $doc =& JFactory::getDocument(); $style = "\n\t\t#{$control_name}{$name}-tabs {\n\t\t\tborder-top-width: 0px;\n\t\t\tborder-right-width: 0px;\n\t\t\tborder-bottom-width: 0px;\n\t\t\tborder-left-width: 0px;\n\t\t}"; $doc->addStyleDeclaration($style); $id = JRequest::getInt('id'); if (!$id) { $id = reset(JRequest::getVar('cid', array())); } $db =& JFactory::getDBO(); $query = 'SELECT params' . ' FROM #__modules' . ' WHERE id =' . $id; $db->setQuery($query); $values = $db->loadResult(); //Get the module name, in a slightly hacky way. $module = JRequest::getWord('module'); $mod =& JTable::getInstance('Module', 'JTable'); if ($id) { $mod->load($id); $modname = $mod->module; } elseif ($module) { $modname = $module; } nimport('napi.html.parameter'); $load = new NParameter($values, JPATH_ROOT . DS . 'modules' . DS . $modname . DS . $modname . '.xml'); if (!$node->children()) { $content = $load->renderFieldset('params', $value, $node['suffix']); $container = $node['panel'] ? "\n\t\t\t<div id='{$control_name}{$name}' class='panel ui-widget ui-widget-content'>\n\t\t\t\t<h3 class='title jpane-toggler' id='{$name}-page'>\n\t\t\t\t\t<span>" . JFilterOutput::ampReplace($label) . "</span>\n\t\t\t\t</h3>\n\t\t\t\t<div class='jpane-slider ui-widget-content content' style='background:transparent;'>{$content}</div>\n\t\t\t</div>" : " <div id='{$control_name}{$name}'>{$content}</div>"; $script = "\n\t\t\t\tjQuery.noConflict();\n\t \n\t\t\t\tjQuery(document).ready(function(\$){\n\t\t\t\t\t\$('#{$control_name}{$name}').closest('.pane-sliders > .panel').{$order}(\$('#{$control_name}{$name}'));\n\t\t\t\t});\n\t\t\t\t"; $doc->addScriptDeclaration($script); } else { $content = null; $panel = null; $title = null; $container = $node['panel'] ? " <div id='{$control_name}{$name}' class='panel ui-widget ui-widget-content'>" : " <div id='{$control_name}{$name}'>"; $opt['useCookie'] = $node['cookie'] ? '\'' . $node['cookie'] . '\'' : null; JHTML::script('tabs.js'); $panel .= JPaneTabs::startPane($control_name . $name . 'tabs'); foreach ($node->children() as $group) { $content = $load->renderFieldset('params', $group['value'], $node['suffix']); $title .= $node['panel'] ? ' <span>' . JFilterOutput::ampReplace($group->data()) . '</span>' : JFilterOutput::ampReplace($group->data()); $panel .= $node['panel'] ? JPaneTabs::startPanel(JFilterOutput::ampReplace($group->data()), $group['value']) . $content . JPaneTabs::endPanel() : $content; } $panel .= JPaneTabs::endPane(); $container .= $node['panel'] ? '<h3 class="title jpane-toggler" id="' . $value . '-page"><span>' . JFilterOutput::ampReplace($label) . '</span></h3> <div class="jpane-slider jpane-current ui-widget-content content" style="background:transparent;">' . $panel . '</div> </div>' : $panel . '</div>'; $script = "\n\t\tjQuery.noConflict();\n \n\t\tjQuery(document).ready(function(\$){\n\t\t\t\$('#{$control_name}{$name}').closest('.pane-sliders > .panel').{$order}(\$('#{$control_name}{$name}'));\n\t\t});\n\t\t\t\t\n\t\t\t\t\n\t\twindow.addEvent('domready', function(){ \n\t\t\t\n\t\t\tvar dur = 600;\n\t\t\tvar trans = Fx.Transitions.Quad.easeInOut;\n\t\t\tvar el = \$\$('#{$control_name}{$name} div.jpane-slider').getFirst();\n\t\t\tvar fx = new Fx.Styles(el, {duration: dur, transition: trans});\n\t\t\t\n\t\t\t\$\$('dl.tabs').each(function(tabs){ new JTabs(tabs, {\n\t\t\tonActive: function(title, description){\n description.effects({duration: dur, transition: trans}).start({'opacity': 1, 'height': description.getSize().scrollSize.y});\n title.addClass('open').removeClass('closed');\n\t el.effects({duration: dur, transition: trans}).start({'height': description.getSize().scrollSize.y + title.getParent().getSize().scrollSize.y + title.getParent().getStyle('margin-top').toInt()});\n },\n onBackground: function(title, description){\n \tdescription.effects({duration: dur, transition: trans}).start({'opacity': 0});\n \tdescription.effects({duration: dur, transition: trans}).start({'height': 0});\n title.addClass('closed').removeClass('open');\n },\n cookie: 'showcase'}); }); \n });"; $doc->addScriptDeclaration($script); $doc->addStyleDeclaration('.jpane-current div.current { padding: 0px 0px; border-width:0px; border-top-width:1px;}'); } return $container; }
function html($html, $node, $start = null, $end = null, $panes = array()) { global $option; $doc =& JFactory::getDocument(); //$doc->addScript(JURI::root(true).'/media/napi/js/accordion.fix.js'); //$doc->addScript(JURI::root(true).'/media/napi/js/tabs.fix.js'); switch (get_class($this->_parent)) { default: case 'JParameter': $start = '</td></tr></table></div></div></div>'; $parent = $this->_parent; $xml = $parent->_xml; $params = new NParameter($parent); nimport('napi.html.pane'); $pane = NPane::getInstance('sliders'); //$start .= $pane->startPane($node['id']?$node['id']:( $node['name'] ? $node['name'] : $node['type'] ).'-pane'); foreach ($params->_xml as $group => $object) { if ($object->attributes($option) != 'hide' && ($object['if'] ? $this->checkIf($object) : true) && $group != '_default') { //Create default title $title = JText::sprintf($object['title'] ? $object['title'] : '%s Parameters', ucwords($object['group'])); //Create tabtitle $tabtitle = JText::sprintf($object['tabtitle'] ? $object['tabtitle'] : '%s', ucwords($object['group'])); //Check a new sliders instance is started if ($object['sliders'] != 'end' && $object['sliders']) { $sliders = NPane::getInstance('sliders'); $html .= $sliders->startPane($group . '-pane'); } //Check a new slider instance is started if (($object['slider'] !== 'false' && $object['slider'] != 'end' || $object['slider'] == 'start' && $object['slider']) && $sliders) { $html .= $sliders->startPanel($title, $object['id'] ? $object['id'] : $group . '-page'); } //Check a new tabs instance is started if ($object['tabs'] != 'end' && $object['tabs']) { $tabs = NPane::getInstance('tabs', array('useCookie' => '\'' . $node['name'] . '\'')); $html .= $tabs->startPane($group . '-pane'); } //Check a new tab instance is started if (($object['tab'] !== 'false' && $object['tab'] != 'end' || $object['tab'] == 'start' && $object['tab']) && isset($tabs)) { $html .= $tabs->startPanel($tabtitle, $object['id'] ? $object['id'] : $group . '-page'); } // if($object['panel']) // { // $html .= $pane->endPane(); // $id = !$object['id']?$group.'-pane':$object['id']; // $html .= $pane->startPane($id); // } //$html .= $pane->startPanel(JText::sprintf($object['title']?$object['title']:'%s Parameters', ucwords($object['group'])), $object['id']?$object['id']:$group.'-page'); $html .= $object['render'] == 'inline' ? $params->renderInline('params', $group) : $params->renderFieldset('params', $group); //$html .= $pane->endPanel(); //Check a new tab instance is ended if (($object['tab'] !== 'false' && $object['tab'] != 'start' || $object['tab'] == 'end' && $object['tab']) && isset($tabs)) { $html .= $tabs->endPanel(); } //Check if tabs instance is ended if ($object['tabs'] != 'start' && $object['tabs'] && isset($tabs)) { $html .= $tabs->endPane(); unset($tabs); } //Check a new slider instance is ended if (($object['slider'] !== 'false' && $object['slider'] != 'start' || $object['slider'] == 'end' && $object['slider']) && $sliders) { $html .= $sliders->endPanel(); } //Check if sliders instance is ended if ($object['sliders'] != 'start' && $object['sliders'] && $sliders) { $html .= $sliders->endPane(); unset($sliders); } } } // gettype($html)!='array' ? $html = array() : ''; // foreach($this->_panels as $group => $panel) // { // if($group=='sliders'||$group=='tabs') // { // $html[] = $$group->startPane($group.'-pane'); // foreach($panel as $innergroup => $innerpanel) // { // $html[] = $$group->startPanel(JText::_('Parameters '.$innergroup), $innergroup); //$html[] = $pane->startPane($test.'-pane'); // if($innergroup=='sliders'||$innergroup=='tabs') // { // $html[] = $$innergroup->startPane($innergroup.'-panse'); // foreach($innerpanel as $childgroup => $childpanel) // { // $html[] = $$innergroup->startPanel($childgroup, $childgroup.'ss'); //$html[] = $pane->startPane($test.'-pane'); // $html[] = $this->_groups[$childgroup]; //$me = 'sliders'; //die('<pre>'.print_r($$me->startPanel('me'), true).'</pre>'); // $html[] = $$innergroup->endPanel(); // } // $html[] = $$innergroup->endPane(); // } else { // // $html[] = $this->_groups[$innergroup]; // } // $html[] = $$group->endPanel(); // } //$me = 'sliders'; //die('<pre>'.print_r($$me->startPanel('me'), true).'</pre>'); // $html[] = $$group->endPane(); // } // } //die('<pre>'.print_r($this->_panels, true).'</pre>'); //$end .= $pane->endPane(); $params->_napi = true; $this->_parent->_napi = true; //$start .= print_r($params); //$end .= '<pre>'.print_r($this->_parent, true).'</pre>'; JHTML::_('behavior.mootools'); $doc->addStyleDeclaration('#menu-pane, #deletediv { display:none; }'); $doc->addScriptDeclaration('window.addEvent(\'domready\', function(){ $(\'deletediv\').remove(); $(\'menu-pane\').remove(); });'); $end = '<div id="deletediv"><div><div><table><tr><td class="paramlist_value">'; break; case 'NParameter': break; } return $start . $html . $end; }
function fetchElement($name, $value, &$node, $control_name) { $doc =& JFactory::getDocument(); $root = JURI::root(); $namespace = $node['namespace'] ? $node['namespace'] : 'params'; $group = $node->attributes('loopgroup', 'loop'); $titleprefix = $node->attributes('titleprefix', 'Tab '); $placeholder = $node->attributes('placeholder', ''); $path = null; switch (JRequest::getCmd('option')) { case 'com_modules': $id = JRequest::getInt('id'); if (!$id) { $id = reset(JRequest::getVar('cid', array())); } $db =& JFactory::getDBO(); $query = 'SELECT params' . ' FROM #__modules' . ' WHERE id =' . $id; $db->setQuery($query); $values = $db->loadResult(); //Get the module name, in a slightly hacky way. $module = JRequest::getWord('module'); $mod =& JTable::getInstance('Module', 'JTable'); if ($id) { $mod->load($id); $modname = $mod->module; } elseif ($module) { $modname = $module; } $path = JApplicationHelper::getPath('mod0_xml', $modname); //deactivate autosave $autosave = false; if (JRequest::getInt($name . 'save') && $autosave) { echo '<pre>'; $orderArray = JRequest::getVar($name . 'order', '', '', 'array'); echo "orderArray\n"; //print_r($orderArray); $orderImplode = implode(',', $orderArray); echo "\n orderImplode\n"; //print_r($orderImplode); $loop = new NParameter($values, $path); $loop->set($name, $orderImplode); $valueArray = $loop->_registry['_default']['data']; $paramArray = array(); foreach ($valueArray as $loopkey => $loopval) { $paramArray[] = $loopkey . '=' . $loopval; } $orderQuery = implode("\n", $paramArray); //echo $orderQuery; $db =& JFactory::getDBO(); //$query = "UPDATE #__modules SET params = '$orderQuery' WHERE id = '$id'"; //$db->setQuery( $query ); //$done = $db->query(); echo '</pre>'; } break; case 'com_k2' && is_null($node['values']): $id = JRequest::getInt('cid'); $db =& JFactory::getDBO(); $query = 'SELECT plugins' . ' FROM #__k2_items' . ' WHERE id =' . $id; $db->setQuery($query); $values = $db->loadResult(); $path = JApplicationHelper::getPath('plg_xml', 'k2' . DS . $node['useroption']); break; default: jimport('joomla.environment.request'); $id = $node['getvalue'] ? JRequest::getInt($node['getvalue']) : JRequest::getInt('id'); if (!$id) { $id = reset(JRequest::getVar('cid', array())); } $db =& JFactory::getDBO(); $db->setQuery(sprintf($node['values'], $id)); $values = $db->loadResult(); $aid = $node['queryvalue'] ? JRequest::getInt($node['queryvalue']) : JRequest::getInt('id'); //die(sprintf($node['values'], $id)); $db->setQuery(sprintf($node['query'], $aid)); $order = $titles = array(); foreach ($db->loadObjectList() as $tmp) { $titles[$tmp->id] = $tmp->name; $order[] = $tmp->id; } $value = implode(',', $order); $nosort = true; $path = JApplicationHelper::getPath($node['getpath'], $node['plugingroup'] ? $node['plugingroup'] . DS . $node['useroption'] : $node['useroption']); break; } //die($values); $order = $node['order'] !== 0 ? $node['order'] : 1; $afteradd = $node->attributes('afteradd', ''); $special = $this->_parent->get($name . '_special') ? $this->_parent->get($name . '_special') : '0'; $loop = new NParameter($values, $path); $loopcontent = ''; $looptitle = ''; //$value = explode(', ', $value); //$switch = ( $value==='1'?'one': ( is_numeric($value)?'loop':'foreach' ) ); $switch = 'foreach'; $hiddenvalue = $value; switch ($switch) { case 'loop': $i = 0; for ($i = 0; $i < $value; $i++) { $loop = new NParameter($values, $path); $title = $this->_parent->get($node['titleparam'] . $i, $titleprefix . $i); $looptitle .= $this->javascriptHTML('<li id="' . $control_name . $name . '-order_' . $i . '"><a id="mp_' . $control_name . $node['titleparam'] . $i . '" href="#' . $name . '_' . $i . '">' . $title . '</a></li>'); $loopcontent .= $this->javascriptHTML('<div id="' . $name . '_' . $i . '">' . $loop->renderFieldset($namespace, $group, $i) . '</div>'); //echo $this->javascriptHTML($this->setLoopName($placeholder, $i, ($tab->startPanel($titleprefix.($i+1), $name.'-tab').$loop->render($namespace, $group).$tab->endPanel()))); } break; case 'one': $loop = new NParameter($values, $path); $title = $this->_parent->get($node['titleparam'] . $i, $titleprefix . $i); $looptitle .= $this->javascriptHTML('<li id="' . $control_name . $name . '-order_' . $i . '"><a id="mp_' . $control_name . $node['titleparam'] . $i . '" href="#' . $name . '_' . $i . '">' . $title . '</a></li>'); $loopcontent .= $this->javascriptHTML('<div id="' . $name . '_' . $i . '">' . $loop->renderFieldset($namespace, $group, $i) . '</div>'); break; case 'foreach': unset($i); $count = 0; $hiddenvalue = $value; $value = explode(',', $value); foreach ($value as $item => $i) { $isDefault = $special == $count++ ? ' ui-helper-default-active' : ''; $loop = new NParameter($values, $path); $title = $titles ? $titles[$i] : $this->_parent->get($node['titleparam'] . $i, $titleprefix . ($i != 0 ? $i : '')); $loopcontrols = !$nosort ? '<span class="ui-helper-default ui-icon ui-icon-star' . $isDefault . '" rel="' . $i . '"></span><span class="remove ui-icon ui-icon-close">x</span>' : null; $looptitle .= '<li id="' . $control_name . $name . '-order-items_' . $i . '">' . $loopcontrols . '<a id="mp_' . $control_name . $node['titleparam'] . $i . '" style="display:block;width:100%;" href="#' . $name . '_' . $i . '">' . $title . '</a></li>'; $loopcontent .= '<div id="' . $name . '_' . $i . '">' . $loop->renderFieldset($namespace, $group, $i) . '</div>'; } unset($i); break; } $deletetip = JText::_('DELETETIP'); $controls = !$nosort ? '<li class="add"><span class="ui-icon ui-icon-plusthick ui-helper-tabsadd"></span><span class="ui-icon ui-icon-minusthick ui-helper-tabsremove hasTip" title="' . $deletetip . ' "></span></li>' : null; $container = ' <div id="' . $control_name . $name . '" class="panel"><ul>' . $looptitle . $controls . '</ul>' . $loopcontent; //Backup $headData = $doc->getHeadData(); $scriptBackup = $headData['script']; unset($doc->_script); //code for the add tab function $newTabGroup = new NParameter($values, $path); $title = $this->_parent->get($node['titleparam'], $titleprefix . ' @'); $newTabGroup = $this->javascriptHTML($newTabGroup->renderFieldset($namespace, $group, '#{id}')); $headScript = $doc->getHeadData(); $dynScript = $headScript['script']['text/javascript']; $dynScript = $this->javascriptOnEval($dynScript); unset($doc->_script); $insert = $node['inject'] ? $node['inject'] : 'insertBefore'; $appendTo = $node['selector'] ? JText::sprintf($node['selector'], $order) : '#menu-pane > div:eq(' . $order . ')'; //die($appendTo); $script = "\n\t\t\tjQuery.noConflict();\n \n\t\t\tjQuery(document).ready(function(\$){\n\t\t\t\t//Tabs are a waitin'\n\t\t\t\t\$('#{$control_name}{$name}')\n\t\t\t\t\t.{$insert}('{$appendTo}')\n\t\t\t\t\t.tabs({ \n\t\t\t\t\t\tshow: function(event, ui)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\$('.ui-tabs-panel:visible .ui-state-active:visible:not(.modal)').click();\n\t\t\t\t\t\t\t\$('#{$control_name}{$name}-default').val(ui.index);\n\t\t\t\t\t\t}, \n\t\t\t\t\t\ttabTemplate: '<li id=\"{$control_name}{$name}-order-items_#{label}\"><span class=\"ui-helper-default ui-icon ui-icon-star\"></span><span class=\"remove ui-icon ui-icon-close\">x</span><a id=\"mp_{$control_name}" . $node['titleparam'] . "#{label}\" href=\"#{href}\">Item #{label}</a></li>', \n\t\t\t\t\t\tpanelTemplate: '<div></div>'})\n\t\t\t\t\t.find('.ui-tabs-nav')"; if (!$nosort) { $script .= ".sortable({\n\t\t\t\t\t\taxis:'y', \n\t\t\t\t\t\trevert: 'true', \n\t\t\t\t\t\tappendTo: 'parent',\n\t\t\t\t\t\tcancel: 'button, .add', \n\t\t\t\t\t\tupdate: function() \n\t\t\t \t\t\t\t{\n\t\t\t\t\t\t\t\tvar order = \$('#{$control_name}{$name}').find('.ui-tabs-nav').sortable('toArray');\n\t\t\t\t\t\t\t\tvar item = [];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\$(order).each(function() {\n\t\t\t\t\t\t\t\t\tvar res = this.match((/(.+)[-=_](.+)/));\n\t\t\t\t\t\t\t\t\tif(res) item.push(res[2]);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\titem.join(',');\n\t\t\t\t\t\t\t\tvar ordersave = item + '&option=com_modules&task=edit&id=18&{$name}\\save=1';\n\t\t\t\t\t\t\t\t\$('#{$control_name}{$name}-val').val(item);\n\t\t\t\t\t\t\t}, \n\t\t\t\t\t\tchange: function(event, ui) \n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\$('#{$control_name}{$name} .ui-tabs-nav .add').appendTo('#{$control_name}{$name} .ui-tabs-nav');\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: function(event, ui)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\$(ui.item).removeAttr('style');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t})"; } $script .= ";\n\t\t\t\t\$('#{$control_name}{$name}').bind('tabsadd', function(event, ui) {\n\t\t\t\t\t\$('#{$control_name}{$name}').tabs('select', '#' + ui.panel.id);\n\t\t\t\t\tvar order = \$('#{$control_name}{$name}').find('.ui-tabs-nav').sortable('toArray');\n\t\t\t\t\t\t\tvar item = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\$(order).each(function() {\n\t\t\t\t\t\t\t\tvar res = this.match((/(.+)[-=_](.+)/));\n\t\t\t\t\t\t\t\tif(res) item.push(res[2]);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tvar contents = '{$newTabGroup}';\n\t\t\t\t\t\t\t\$(contents.replace(/#\\{id\\}/g, item[ui.index])).appendTo('#'+ui.panel.id);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\tvar order = \$('#{$control_name}{$name}').find('.ui-tabs-nav').sortable('toArray');\n\t\t\t\t\tvar item = [];\n\t\t\t\t\t\n\t\t\t\t\t\$(order).each(function() {\n\t\t\t\t\t\tvar res = this.match((/(.+)[-=_](.+)/));\n\t\t\t\t\t\tif(res) item.push(res[2]);\n\t\t\t\t\t});\n\t\t\t\t\titem.join(',');\n\n\t\t\t\t\t\$('#{$control_name}{$name}-val').val(item);\n\t\t\t\t\t{$afteradd}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tvar \$" . "tabs = \$('#{$control_name}{$name}').tabs();\n\t\t\t\tvar selected = \$" . "tabs.tabs('option', 'selected');\n\n\t\t\t\t\$('#{$control_name}{$name} .remove').live('uitabsremove', function(){\n\t\t\t\t\t{$afteradd}\n\t\t\t\t\tif( \$('#{$control_name}{$name} .ui-tabs-nav .remove').length === 1 ) return false;\n\t\t\t\t\tvar index = \$('#{$control_name}{$name} .ui-tabs-nav .remove').index(this);\n\t\t\t\t\tif( \$('#{$control_name}{$name} .ui-tabs-nav .remove').length === 2 ) \$('#{$control_name}{$name} .ui-tabs-nav .remove').fadeOut();\n\t\t\t\t\t\$('#{$control_name}{$name}').tabs('remove', index);\n\t\t\t\t\tvar order = \$('#{$control_name}{$name}').find('.ui-tabs-nav').sortable('toArray');\n\t\t\t\t\tvar item = [];\n\t\t\t\t\t\n\t\t\t\t\t\$(order).each(function() {\n\t\t\t\t\t\tvar res = this.match((/(.+)[-=_](.+)/));\n\t\t\t\t\t\tif(res) item.push(res[2]);\n\t\t\t\t\t});\n\t\t\t\t\titem.join(',');\n\n\t\t\t\t\t\$('#{$control_name}{$name}-val').val(item);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\$('#{$control_name}{$name} li.add .ui-helper-tabsadd').click(\n\t\t\t\t\tfunction(){ \t\n\t\t\t\t\t\t\t//\$('#{$control_name}{$name} .ui-tabs-nav .remove').fadeIn();\n\t\t\t\t\t\n\t\t\t\t\t\t\tvar order = \$('#{$control_name}{$name}').find('.ui-tabs-nav').sortable('toArray');\n\t\t\t\t\t\t\tvar item = [];\n\t\t\t\t\t\t\tvar newitem = [];\n\t\t\t\t\t\t\tvar ordercount = order.length;\n\t\t\t\t\t\t\tvar itemchecker = false;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\$(order).each(function(i) {\n\t\t\t\t\t\t\t\tvar res = this.match((/(.+)[-=_](.+)/));\n\t\t\t\t\t\t\t\tif(res) item.push(res[2]);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tvar checker = 0;\n\t\t\t\t\t\t\t\t\tfor (checker=0;checker<ordercount;checker++)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\$(item).each(function(i) {\n\t\t\t\t\t\t\t\t\t\t\tif(item[i]!=checker) { itemchecker = true; }\n\t\t\t\t\t\t\t\t\t\t\tif(item[i]==checker) { itemchecker = false; return false; }\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tif(itemchecker==true) { \n\t\t\t\t\t\t\t\t\t\t\tnewitem = checker; \n\t\t\t\t\t\t\t\t\t\t\t\$('#{$control_name}{$name}').tabs('add', '#items_'+newitem, newitem);\n\t\t\t\t\t\t\t\t\t\t\t\$('#{$control_name}{$name} .ui-tabs-nav .add').appendTo('#{$control_name}{$name} .ui-tabs-nav');\n\t\t\t\t\t\t\t\t\t\t\treturn true; \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tvar valueme = \$('#{$control_name}{$name}-default').val();\n\t\t\t\t//\$('#{$control_name}{$name} li:nth-child('+\$('#{$control_name}{$name}-default').val()+')').click().mouseenter().mouseleave();\n\t\t\t\n\t\t\t\t\$('#{$control_name}{$name}').bind('tabsshow', function(event, ui) {\n\t\t\t\t\t\$('.fg-buttonset:visible .ui-state-active').trigger('filterme');\n\t\t\t\t\tvar selectedVal = ui.panel.id;\n\t\t\t\t\t\$('#{$control_name}{$name}" . "_selected').val(selectedVal);\t\t\n\t\t\t\t});\n\t\t\t\tvar valueme = \$('#{$control_name}{$name}" . "_selected').val();\n\t\t\t\t\$('#{$control_name}{$name}').tabs('select', valueme);\n\t\t\t\t\n\t\t\t\t\$('ul.ui-tabs-nav', '#{$control_name}{$name}').bind('height',\n\t\t\t function (e, many) {\n\t\t\t \tif(many==null){ var many = 2; }\n\t\t\t \tvar uHeight = \$('li', this).length - many;\n\t\t\t \tif(dur==null){ var dur = 1000; }\n\t\t\t \tvar uOffset = \$('li:eq('+uHeight+')', this).position();\n\t\t\t \tvar nHeight = uOffset.top + \$('li:last-child', this).height()-11;\n\t\t\t \tvar pHeight = nHeight+19;\n\t\t\t \tif(nHeight>=\$('#{$control_name}{$name}').height())\n\t\t\t \t{\n\t\t\t\t \t\$(this)\n\t\t\t\t \t\t.stop().animate({height: nHeight+'px', overflow: 'visible'}, dur).removeClass('ui-tabs-overflow');\n\t\t\t\t \$('#{$control_name}{$name}')\n\t\t\t\t \t.stop().animate({minHeight: pHeight}, dur);\n\t\t\t\t } \t\n\t\t\t\t}); \n\t\t\t\t\n\t\t\t\t\$('ul.ui-tabs-nav', '#{$control_name}{$name}').mouseenter(function()\n\t\t\t\t{\n\t\t\t\t\t\$(this).trigger('height');\n\t\t\t\t});\n\t\t\t \$('#{$control_name}{$name}').mouseleave(function (e) {\n\t\t\t var bHeight = (\$('div.ui-tabs-panel:visible > *', '#{$control_name}{$name}').height()+7);\n\t\t\t \t\$('ul.ui-tabs-nav', '#{$control_name}{$name}')\n\t\t\t \t\t.addClass('ui-tabs-overflow').stop().animate({opacity: 1}, 2000).animate({height: bHeight, overflow: 'hidden'}, 1000).stop();\n\t\t\t\t\t\$('#{$control_name}{$name}')\n\t\t\t\t\t\t.stop().animate({opacity: 1}, 2000).animate({minHeight: bHeight}, 1000).stop();\n\t\t\t }\n\t\t\t );\n\t\t\t \$('ul.ui-tabs-nav .ui-helper-tabsremove', '#{$control_name}{$name}').mousedown(function(){\n\t\t\t \tvar stall = \$(this).css('float');\n\t\t\t \t\$(this).animate({float: stall}, 2000, 'linear', function(){\n\t\t\t \t\t\$(this).addClass('stall-is-true');\n\t\t\t \t\tif(confirm('" . JText::_('Click ok to delete all items but your selected one.') . "'))\n\t\t\t \t\t{\n\t\t\t \t\t\t\$('li:not(.ui-tabs-selected) .remove', '#{$control_name}{$name} > ul.ui-tabs-nav').trigger('uitabsremove');\n\t\t\t \t\t}\n\t\t\t \t});\n\t\t\t })\t\n\t\t\t .mouseup(function(){\n\t\t\t \tif(\$(this).hasClass('stall-is-true'))\n\t\t\t \t{\n\t\t\t \t\t\$(this).removeClass('stall-is-true');\n\t\t\t \t\treturn true;\n\t\t\t \t}\n\t\t\t \t\$(this).stop();\n\t\t\t \tif(confirm('" . JText::_('Click ok to delete selected item. Tip: If you want to delete all items excerpt your selected item, click and hold for 2 seconds.') . "'))\n\t\t\t \t{\n\t\t\t \t\t\$('li.ui-tabs-selected .remove', '#{$control_name}{$name} > ul.ui-tabs-nav').trigger('uitabsremove');\n\t\t\t \t}\n\t\t\t });\n\t\t\t \$('ul.ui-tabs-nav .ui-helper-tabsadd', '#{$control_name}{$name}').click(function(){\n\t\t\t \t\$('ul.ui-tabs-nav', '#{$control_name}{$name}').stop().trigger('height');\n\t\t\t });\n//\t\t\t\t\$('.panel.ui-tabs').resizable({ handles: 's', });\n//\t\t\t\talert(\$('div.ui-tabs-panel:visible', '#{$control_name}{$name}').height());\n\t\t\t\t\$('ul.ui-tabs-nav span.ui-helper-default', '#{$control_name}{$name}').live('click', function(){\n\t\t\t\t\tif(!\$(this).hasClass('ui-helper-default-active'))\n\t\t\t\t\t{\n\t\t\t\t\t\t\$('ul.ui-tabs-nav span.ui-helper-default-active', '#{$control_name}{$name}').removeClass('ui-helper-default-active');\n\t\t\t\t\t\tvar index = \$('#{$control_name}{$name} ul.ui-tabs-nav li span.ui-helper-default').index(this);\n\t\t\t\t\t\t\$('#{$control_name}{$name}" . "_special').val(index);\n\t\t\t\t\t\t\$(this).addClass('ui-helper-default-active');\n\t\t\t\t\t} \n\t\t\t\t});\n\t\t\t});\n\t\t\t"; $doc->addScriptDeclaration($script); //Recover head data $doc->addScriptDeclaration($headData['script']['text/javascript']); $class = $node['class'] ? 'class="' . $node['class'] . '"' : 'class="text_area"'; $selected = $this->_parent->get($node['name'] . '_selected') == true ? $this->_parent->get($node['name'] . '_selected') : '0'; //echo $this->_parent->get($name.'_default'); return $container . '<input type="hidden" name="' . $control_name . '[' . $name . ']" id="' . $control_name . $name . '-val" value="' . $hiddenvalue . '" ' . $class . ' /> <input type="hidden" name="' . $control_name . '[' . $name . '_special]" id="' . $control_name . $name . '_special" value="' . $special . '" ' . $class . ' /> <input type="hidden" name="' . $control_name . '[' . $name . '_selected]" id="' . $control_name . $name . '_selected" value="' . $selected . '" ' . $class . ' /></div>'; }