%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightcolab.com/administrator/components/com_jce/views/profiles/ |
| Current File : //home1/lightco1/www/lightcolab.com/administrator/components/com_jce/views/profiles/view.html.php |
<?php
/**
* @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('_JEXEC') or die('RESTRICTED');
wfimport('admin.classes.view');
class WFViewProfiles extends WFView
{
private function getOptions($params)
{
wfimport('admin.models.editor');
$options = array(
'colorpicker' => array(
'stylesheets' => (array) WFModelEditor::getStyleSheets(),
'labels' => array(
'title' => WFText::_('WF_COLORPICKER_TITLE'),
'picker' => WFText::_('WF_COLORPICKER_PICKER'),
'palette' => WFText::_('WF_COLORPICKER_PALETTE'),
'named' => WFText::_('WF_COLORPICKER_NAMED'),
'template' => WFText::_('WF_COLORPICKER_TEMPLATE'),
'custom' => WFText::_('WF_COLORPICKER_CUSTOM'),
'color' => WFText::_('WF_COLORPICKER_COLOR'),
'apply' => WFText::_('WF_COLORPICKER_APPLY'),
'name' => WFText::_('WF_COLORPICKER_NAME'),
),
),
'browser' => array(
'title' => WFText::_('WF_BROWSER_TITLE'),
),
);
return $options;
}
public function display($tpl = null)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$acl = JFactory::getACL();
$client = 'admin';
$view = JRequest::getWord('view');
$task = JRequest::getWord('task');
$option = JRequest::getWord('option');
$lists = array();
$model = $this->getModel();
switch ($task) {
default:
case 'publish':
case 'unpublish':
case 'remove':
case 'save':
case 'copy':
$filter_order = $app->getUserStateFromRequest("$option.$view.filter_order", 'filter_order', 'p.ordering', 'cmd');
$filter_order_Dir = $app->getUserStateFromRequest("$option.$view.filter_order_Dir", 'filter_order_Dir', '', 'word');
$filter_state = $app->getUserStateFromRequest("$option.$view.filter_state", 'filter_state', '', 'word');
$search = $app->getUserStateFromRequest("$option.$view.search", 'search', '', 'cmd');
$search = JString::strtolower($search);
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("$option.$view.limitstart", 'limitstart', 0, 'int');
$where = array();
if (!empty($search)) {
if (defined('JPATH_PLATFORM')) {
$quoted = $db->quote('%'.$search.'%', false);
} else {
$quoted = $db->Quote('%'.$search.'%', false);
}
$where[] = 'LOWER( p.name ) LIKE '.$quoted;
}
if ($filter_state) {
if ($filter_state == 'P') {
$where[] = 'p.published = 1';
} elseif ($filter_state == 'U') {
$where[] = 'p.published = 0';
}
}
$order = array($filter_order, $filter_order_Dir);
// get the total number of records
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('COUNT(p.id)')->from('#__wf_profiles AS p');
if (count($where)) {
$query->where($where);
}
} else {
$query = 'SELECT COUNT(p.id)'
.' FROM #__wf_profiles AS p'
.(count($where) ? ' WHERE '.implode(' AND ', $where) : '');
}
$db->setQuery($query);
$total = $db->loadResult();
jimport('joomla.html.pagination');
$pagination = new JPagination($total, $limitstart, $limit);
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('p.*, u.name AS editor')->from('#__wf_profiles AS p')->join('LEFT', '#__users AS u ON u.id = p.checked_out');
if (count($where)) {
$query->where($where);
}
$query->order(trim(implode(' ', $order)));
} else {
$query = 'SELECT p.*, u.name AS editor'
.' FROM #__wf_profiles AS p'
.' LEFT JOIN #__users AS u ON u.id = p.checked_out'
.(count($where) ? ' WHERE '.implode(' AND ', $where) : '')
.' ORDER BY '.trim(implode(' ', $order));
}
$db->setQuery($query, $pagination->limitstart, $pagination->limit);
$rows = $db->loadObjectList();
if ($db->getErrorNum()) {
echo $db->stderr();
return false;
}
// table ordering
$lists['order_Dir'] = $filter_order_Dir;
$lists['order'] = $filter_order;
// search filter
$lists['search'] = $search;
$this->assignRef('user', $user);
$this->assignRef('lists', $lists);
$this->assignRef('rows', $rows);
$this->assignRef('pagination', $pagination);
//JToolBarHelper::title(WFText::_('WF_PROFILES_TITLE').' : '.WFText::_('WF_PROFILES_LIST'), 'profiles.png' );
WFToolbarHelper::addNewX();
WFToolbarHelper::editListX();
WFToolbarHelper::custom('copy', 'copy.png', 'copy_f2.png', 'WF_PROFILES_COPY', true);
WFToolbarHelper::export();
if (count($rows) > 1) {
WFToolbarHelper::publishList();
WFToolbarHelper::unpublishList();
}
WFToolbarHelper::deleteList('', 'remove', 'WF_PROFILES_DELETE');
WFToolbarHelper::help('profiles.about');
$options = array(
'button' => '#upload_button',
'task' => 'import',
'labels' => array(
'browse' => WFText::_('WF_LABEL_BROWSE'),
'alert' => WFText::_('WF_PROFILES_IMPORT_BROWSE_ERROR'),
),
);
$this->addScriptDeclaration('jQuery(document).ready(function($){$(\'input[type="file"]\').upload('.json_encode($options).')});');
$this->setLayout('default');
break;
case 'apply':
case 'add':
case 'edit':
JHtml::_('behavior.modal');
// Load media
$this->addScript(JURI::root(true).'/administrator/components/com_jce/media/js/profile.min.js');
// load styles
$this->addStyleSheet(JURI::root(true).'/administrator/components/com_jce/media/css/profile.min.css');
$cid = JRequest::getVar('cid', array(0), '', 'array');
JArrayHelper::toInteger($cid, array(0));
$lists = array();
$row = JTable::getInstance('profiles', 'WFTable');
// load the row from the db table
$row->load($cid[0]);
// fail if checked out not by 'me'
if ($row->isCheckedOut($user->get('id'))) {
$msg = JText::sprintf('WF_PROFILES_CHECKED_OUT', $row->name);
$this->setRedirect('index.php?option='.$option.'&view=profiles', $msg, 'error');
return false;
}
// Load editor params
$component = JComponentHelper::getComponent('com_jce');
// Load Language
$language = JFactory::getLanguage();
$language->load('com_jce', JPATH_ADMINISTRATOR);
$language->load('com_jce', JPATH_SITE);
$language->load('plg_editors_jce', JPATH_ADMINISTRATOR);
// load the row from the db table
if ($cid[0]) {
$row->checkout($user->get('id'));
} else {
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('COUNT(id)')->from('#__wf_profiles');
} else {
$query = 'SELECT COUNT(id)'.' FROM #__wf_profiles';
}
$db->setQuery($query);
$total = $db->loadResult();
// get the defaults from xml
$row = $model->getDefaultProfile();
if (!is_object($row)) {
$row->name = '';
$row->description = '';
$row->types = '';
$row->components = '';
$row->area = 0;
$row->device = array();
$row->types = '';
$row->rows = '';
$row->plugins = '';
$row->published = 1;
$row->ordering = 0;
$row->params = '{}';
}
$row->params = json_decode($row->params.','.$component->params);
}
$row->area = (isset($row->area)) ? $row->area : 0;
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('ordering AS value, name AS text')->from('#__wf_profiles')->where(array('published = 1', 'ordering > -10000', 'ordering < 10000'))->order('ordering');
} else {
// build the html select list for ordering
$query = 'SELECT ordering AS value, name AS text'
.' FROM #__wf_profiles'
.' WHERE published = 1'
.' AND ordering > -10000'
.' AND ordering < 10000'
.' ORDER BY ordering';
}
$order = JHTML::_('list.genericordering', $query);
$lists['ordering'] = JHTML::_('select.genericlist', $order, 'ordering', 'class="inputbox"', 'value', 'text', intval($row->ordering));
$lists['published'] = '';
$options = array(
1 => WFText::_('WF_OPTION_YES'),
0 => WFTEXT::_('WF_OPTION_NO'),
);
foreach ($options as $value => $text) {
$checked = '';
if ($value == $row->published) {
$checked = ' checked="checked"';
}
$lists['published'] .= '<label class="radio inline"><input type="radio" id="published-'.$value.'" name="published" value="'.$value.'"'.$checked.' />'.$text.'</label>';
}
$exclude = array(
'com_admin',
'com_cache',
'com_checkin',
'com_config',
//'com_cpanel',
'com_finder',
'com_installer',
'com_languages',
'com_jce',
'com_login',
'com_mailto',
'com_menus',
'com_media',
'com_messages',
'com_newsfeeds',
'com_plugins',
'com_redirect',
'com_templates',
'com_users',
'com_wrapper',
'com_search',
'com_user',
'com_updates',
);
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('element AS value, name AS text')->from('#__extensions')->where(array('type = '.$db->Quote('component'), 'enabled = 1'))->order('name');
} else {
$query = 'SELECT `option` AS value, name AS text'
.' FROM #__components'
.' WHERE parent = 0'
.' AND enabled = 1'
.' ORDER BY name';
}
$db->setQuery($query);
$components = $db->loadObjectList();
$options = array();
// load component languages
for ($i = 0; $i < count($components); ++$i) {
if (!in_array($components[$i]->value, $exclude)) {
$options[] = $components[$i];
// load system language file
$language->load($components[$i]->value.'.sys', JPATH_ADMINISTRATOR);
}
}
// set disabled attribute
$disabled = (!$row->components) ? ' disabled="disabled"' : '';
// components list
$lists['components'] = '<ul id="components" class="checkbox-list span4">';
foreach ($options as $option) {
$checked = in_array($option->value, explode(',', $row->components)) ? ' checked="checked"' : '';
$lists['components'] .= '<li><input type="checkbox" name="components[]" value="'.$option->value.'"'.$checked.$disabled.' /><label class="checkbox">'.JText::_($option->text).'</label></li>';
}
$lists['components'] .= '</ul>';
// components select
$options = array(
'all' => WFText::_('WF_PROFILES_COMPONENTS_ALL'),
'select' => WFText::_('WF_PROFILES_COMPONENTS_SELECT'),
);
$lists['components-select'] = '';
foreach ($options as $value => $text) {
$checked = '';
if ($row->components) {
if ($value == 'select') {
$checked = ' checked="checked"';
}
} else {
if ($value == 'all') {
$checked = ' checked="checked"';
}
}
$lists['components-select'] .= '<label class="radio"><input type="radio" id="components-select-'.$value.'" name="components-select" value="'.$value.'"'.$checked.' />'.$text.'</label>';
}
// area
$options = array(
1 => WFText::_('WF_PROFILES_AREA_FRONTEND'),
2 => WFText::_('WF_PROFILES_AREA_BACKEND'),
);
$lists['area'] = '';
foreach ($options as $value => $text) {
$checked = '';
if (!isset($row->area) || empty($row->area) || in_array($value, explode(',', $row->area))) {
$checked = ' checked="checked"';
}
$lists['area'] .= '<label class="checkbox"><input type="checkbox" name="area[]" value="'.$value.'"'.$checked.' />'.$text.'</label>';
}
// device
$options = array(
'desktop' => WFText::_('WF_PROFILES_DEVICE_DESKTOP'),
'tablet' => WFText::_('WF_PROFILES_DEVICE_TABLET'),
'phone' => WFText::_('WF_PROFILES_DEVICE_PHONE'),
);
$lists['device'] = '';
foreach ($options as $value => $text) {
$checked = '';
if (!isset($row->device) || empty($row->device) || in_array($value, explode(',', $row->device))) {
$checked = ' checked="checked"';
}
$lists['device'] .= '<label class="checkbox inline"><input type="checkbox" name="device[]" value="'.$value.'"'.$checked.' />'.$text.'</label>';
}
// user types from profile
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('types')->from('#__wf_profiles')->where('id NOT IN (17,28,29,30)');
$db->setQuery($query);
$types = $db->loadColumn();
} else {
$query = 'SELECT types'
.' FROM #__wf_profiles'
// Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend
.' WHERE id NOT IN (17,28,29,30)';
$db->setQuery($query);
$types = $db->loadResultArray();
}
if (defined('JPATH_PLATFORM')) {
$options = array();
$query = $db->getQuery(true);
$query->select('a.id AS value, a.title AS text')->from('#__usergroups AS a');
// Add the level in the tree.
$query->select('COUNT(DISTINCT b.id) AS level');
$query->join('LEFT OUTER', '#__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt');
$query->group('a.id, a.lft, a.rgt, a.parent_id, a.title');
$query->order('a.lft ASC');
// Get the options.
$db->setQuery($query);
$options = $db->loadObjectList() or die($db->stdErr());
// Pad the option text with spaces using depth level as a multiplier.
for ($i = 0, $n = count($options); $i < $n; ++$i) {
$options[$i]->text = str_repeat('<span class="gi">|—</span>', $options[$i]->level).$options[$i]->text;
}
} else {
// get list of Groups for dropdown filter
$query = 'SELECT id AS value, name AS text'
.' FROM #__core_acl_aro_groups'
// Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend
.' WHERE id NOT IN (17,28,29,30)';
$db->setQuery($query);
$types = $db->loadObjectList();
$i = '-';
$options = array(
JHTML::_('select.option', '0', WFText::_('Guest')),
);
foreach ($types as $type) {
$options[] = JHTML::_('select.option', $type->value, $i.WFText::_($type->text));
$i .= '|—';
}
}
$lists['usergroups'] = '<ul id="user-groups" class="checkbox-list span4">';
foreach ($options as $option) {
$checked = in_array($option->value, explode(',', $row->types)) ? ' checked="checked"' : '';
$lists['usergroups'] .= '<li><input type="checkbox" name="usergroups[]" value="'.$option->value.'"'.$checked.' /><label class="checkbox">'.$option->text.'</label></li>';
}
$lists['usergroups'] .= '</ul>';
// users
$options = array();
if ($row->id && $row->users) {
$query = $db->getQuery(true);
if (is_object($query)) {
$query->select('id AS value, username AS text')->from('#__users')->where('id IN ('.$row->users.')');
} else {
$query = 'SELECT id as value, username as text'
.' FROM #__users'
.' WHERE id IN ('.$row->users.')';
}
$db->setQuery($query);
$gusers = $db->loadObjectList();
if ($gusers) {
foreach ($gusers as $guser) {
$options[] = JHTML::_('select.option', $guser->value, $guser->text);
}
}
}
$lists['users'] = '<ul id="users" class="unstyled users-list span4">';
foreach ($options as $option) {
$lists['users'] .= '<li><span>'.$option->text.'</span><button class="btn btn-link users-list-delete"><i class="icon-trash"></i></button><input name="users[]" value="'.$option->value.'" type="hidden"></li>';
}
$lists['users'] .= '</ul>';
// Get layout rows
$rows = $model->getRowArray($row->rows);
// assign params to row
$model->getEditorParams($row);
$model->getLayoutParams($row);
// create $params object for "editor"
$params = new WFParameter($row->params, '', 'editor');
// load other theme css
foreach ($model->getThemes() as $theme) {
$files = JFolder::files($theme, 'ui([\w\.]*)\.css$');
foreach ($files as $file) {
$this->addStyleSheet(JURI::root(true).'/components/com_jce/editor/tiny_mce/themes/advanced/skins/'.basename($theme).'/'.$file);
}
}
$plugins = $model->getPlugins();
// assign references
$this->assign('lists', $lists);
$this->assign('profile', $row);
$this->assign('rows', $rows);
$this->assign('params', $params);
$this->assign('plugins', $plugins);
// get options for various widgets
$options = $this->getOptions($params);
$this->addScriptDeclaration('Wf.profiles.options = '.json_encode($options).';');
// set toolbar
if ($row->id) {
JToolBarHelper::title(WFText::_('WF_ADMINISTRATION').' :: '.WFText::_('WF_PROFILES_EDIT').' - ['.$row->name.']', 'logo.png');
} else {
JToolBarHelper::title(WFText::_('WF_ADMINISTRATION').' :: '.WFText::_('WF_PROFILES_NEW'), 'logo.png');
}
// set buttons
WFToolbarHelper::apply();
WFToolbarHelper::save();
WFToolbarHelper::cancel('cancelEdit', 'Close');
WFToolbarHelper::help('profiles.edit');
JRequest::setVar('hidemainmenu', 1);
$this->setLayout('form');
break;
}
$this->assignRef('model', $model);
parent::display($tpl);
}
}