* @link http://www.nonumber.nl * @copyright Copyright (C) 2010 NoNumber! All Rights Reserved * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ // No direct access defined( '_JEXEC' ) or die( 'Restricted access' ); // Add scripts and styles $document =& JFactory::getDocument(); $script = " function modulesanywhere_jInsertEditorText( id, modulepos ) { f = document.getElementById( 'adminForm' ); var style = f.style.value.trim(); if ( modulepos ) { str = '{modulepos '+id+'}'; } else { str = '{module '+id; if ( style ) { str += '|'+style; } str += '}'; } window.parent.jInsertEditorText( str, '".JRequest::getVar( 'name' )."' ); window.parent.document.getElementById( 'sbox-window' ).close(); } "; $document->addScriptDeclaration( $script ); $html = renderHTML(); function getPluginParams( $type, $plugin, $xml = '' ) { $db =& JFactory::getDBO(); $query = " SELECT params FROM #__plugins WHERE folder = '".$type."' AND element = '".$plugin."' LIMIT 1"; $db->setQuery( $query ); $params = $db->loadResult(); $params = new JParameter( $params ); if ( $xml && isset( $params->_registry ) && isset( $params->_registry['_default'] ) && isset( $params->_registry['_default']['data'] ) ) { $params->loadSetupFile( $xml ); $xml_params = $params->renderToArray(); foreach( $params->_registry['_default']['data'] as $key => $val ) { if ( $val == '' && isset( $xml_params[$key] ) && isset( $xml_params[$key]['4'] ) ) { $params->_registry['_default']['data']->$key = $xml_params[$key]['4']; } } foreach( $xml_params as $key => $val ) { if ( $key != '' && $key['0'] != '@' && !isset( $params->_registry['_default']['data']->$key ) && isset( $val['4'] ) ) { $params->_registry['_default']['data']->$key = $val['4']; } } } return $params; } function renderHTML() { global $mainframe; // Initialize some variables $db =& JFactory::getDBO(); $client =& JApplicationHelper::getClientInfo( JRequest::getVar( 'client', '0', '', 'int' ) ); $option = 'modulesanywhere'; $filter_order = $mainframe->getUserStateFromRequest( $option.'filter_order', 'filter_order', 'm.position', 'cmd' ); $filter_order_Dir = $mainframe->getUserStateFromRequest( $option.'filter_order_Dir', 'filter_order_Dir', '', 'word' ); $filter_state = $mainframe->getUserStateFromRequest( $option.'filter_state', 'filter_state', '', 'word' ); $filter_position = $mainframe->getUserStateFromRequest( $option.'filter_position', 'filter_position', '', 'cmd' ); $filter_type = $mainframe->getUserStateFromRequest( $option.'filter_type', 'filter_type', '', 'cmd' ); $filter_assigned = $mainframe->getUserStateFromRequest( $option.'filter_assigned', 'filter_assigned', '', 'cmd' ); $search = $mainframe->getUserStateFromRequest( $option.'search', 'search', '', 'string' ); $search = JString::strtolower( $search ); $limit = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg( 'list_limit' ), 'int' ); $limitstart = JRequest::getCmd( 'limitstart' ); $where[] = 'm.client_id = '.( int ) $client->id; $joins[] = 'LEFT JOIN #__users AS u ON u.id = m.checked_out'; $joins[] = 'LEFT JOIN #__groups AS g ON g.id = m.access'; $joins[] = 'LEFT JOIN #__modules_menu AS mm ON mm.moduleid = m.id'; // used by filter if ( $filter_assigned ) { $joins[] = 'LEFT JOIN #__templates_menu AS t ON t.menuid = mm.menuid'; $where[] = 't.template = '.$db->Quote( $filter_assigned ); } if ( $filter_position ) { $where[] = 'm.position = '.$db->Quote( $filter_position ); } if ( $filter_type ) { $where[] = 'm.module = '.$db->Quote( $filter_type ); } if ( $search ) { $where[] = 'LOWER( m.title ) LIKE '.$db->Quote( '%'.$db->getEscaped( $search, true ).'%', false ); } if ( $filter_state ) { if ( $filter_state == 'P' ) { $where[] = 'm.published = 1'; } else if ( $filter_state == 'U' ) { $where[] = 'm.published = 0'; } } $where = ' WHERE ' . implode( ' AND ', $where ); $join = ' ' . implode( ' ', $joins ); if ( $filter_order == 'm.ordering' ) { $orderby = ' ORDER BY m.position, m.ordering '. $filter_order_Dir; } else { $orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir .', m.ordering ASC'; } // get the total number of records $query = 'SELECT COUNT( DISTINCT m.id )' . ' FROM #__modules AS m' . $join . $where ; $db->setQuery( $query ); $total = $db->loadResult(); jimport( 'joomla.html.pagination' ); $pageNav = new JPagination( $total, $limitstart, $limit ); $query = 'SELECT m.*, u.name AS editor, g.name AS groupname, MIN( mm.menuid ) AS pages' . ' FROM #__modules AS m' . $join . $where . ' GROUP BY m.id' . $orderby ; $db->setQuery( $query, $pageNav->limitstart, $pageNav->limit ); $rows = $db->loadObjectList(); if ( $db->getErrorNum() ) { echo $db->stderr(); return false; } // get list of Positions for dropdown filter $query = 'SELECT m.position AS value, m.position AS text' . ' FROM #__modules as m' . ' WHERE m.client_id = '.( int ) $client->id . ' GROUP BY m.position' . ' ORDER BY m.position' ; $positions[] = JHTML::_( 'select.option', '0', '- '. JText::_( 'Select Position' ) .' -' ); $db->setQuery( $query ); $positions = array_merge( $positions, $db->loadObjectList() ); $lists['position'] = JHTML::_( 'select.genericlist', $positions, 'filter_position', 'class="inputbox" size="1" onchange="this.form.submit()"', 'value', 'text', "$filter_position" ); // get list of Positions for dropdown filter $query = 'SELECT module AS value, module AS text' . ' FROM #__modules' . ' WHERE client_id = '.( int ) $client->id . ' GROUP BY module' . ' ORDER BY module' ; $db->setQuery( $query ); $types[] = JHTML::_( 'select.option', '0', '- '. JText::_( 'Select Type' ) .' -' ); $types = array_merge( $types, $db->loadObjectList() ); $lists['type'] = JHTML::_( 'select.genericlist', $types, 'filter_type', 'class="inputbox" size="1" onchange="this.form.submit()"', 'value', 'text', "$filter_type" ); // state filter $lists['state'] = JHTML::_( 'grid.state', $filter_state ); // template assignment filter $query = 'SELECT DISTINCT( template ) AS text, template AS value'. ' FROM #__templates_menu' . ' WHERE client_id = '.( int ) $client->id; $db->setQuery( $query ); $assigned[] = JHTML::_( 'select.option', '0', '- '. JText::_( 'Select Template' ) .' -' ); $assigned = array_merge( $assigned, $db->loadObjectList() ); $lists['assigned'] = JHTML::_( 'select.genericlist', $assigned, 'filter_assigned', 'class="inputbox" size="1" onchange="this.form.submit()"', 'value', 'text', "$filter_assigned" ); // table ordering $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; // search filter $lists['search']= $search; outputHTML( $rows, $client, $pageNav, $lists ); } function outputHTML( &$rows, &$client, &$page, &$lists ) { $user =& JFactory::getUser(); $ordering = ( $lists['order'] == 'm.ordering' || $lists['order'] == 'm.position' ); JHTML::_( 'behavior.tooltip' ); $plugin_params = getPluginParams( 'system', 'modulesanywhere', JPATH_SITE.DS.'plugins'.DS.'system'.DS.'modulesanywhere.xml' ); // Load plugin language $lang =& JFactory::getLanguage(); $lang->load( 'plg_editors-xtd_modulesanywhere', JPATH_ADMINISTRATOR ); $lang->load( 'plg_system_modulesanywhere', JPATH_ADMINISTRATOR ); $document =& JFactory::getDocument(); $document->addStyleSheet( JURI::root( true ).'/plugins/editors-xtd/modulesanywhere/css/modulesanywhere_popup.css' ); ?>