%PDF- %PDF-
| Direktori : /home1/lightco1/www/administrator/components/com_virtuemart/helpers/ |
| Current File : //home1/lightco1/www/administrator/components/com_virtuemart/helpers/vmviewadmin.php |
<?php
/**
* abstract controller class containing get,store,delete,publish and pagination
*
* This class provides the functions for the Views
* This class provides the functions for the calculations
*
* @package VirtueMart
* @subpackage Helpers
* @author Max Milbers
* @copyright Copyright (C) 2014-2015 Virtuemart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart 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.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
// Load the view framework
jimport( 'joomla.application.component.view');
// Load default helpers
if (!class_exists('ShopFunctions')) require(VMPATH_ADMIN.DS.'helpers'.DS.'shopfunctions.php');
if (!class_exists('AdminUIHelper')) require(VMPATH_ADMIN.DS.'helpers'.DS.'adminui.php');
if (!class_exists('JToolBarHelper')) require(JPATH_ADMINISTRATOR.DS.'includes'.DS.'toolbar.php');
class VmViewAdmin extends JViewLegacy {
/**
* Sets automatically the shortcut for the language and the redirect path
* @author Max Milbers
*/
var $lists = array();
var $showVendors = null;
protected $canDo;
var $writeJs = true;
function __construct($config = array()) {
parent::__construct($config);
}
/*
* Override the display function to include ACL
* Redirect to the control panel when user does not have access
*/
public function display($tpl = null)
{
$view = vRequest::getCmd('view', vRequest::getCmd('controller','virtuemart'));
if ($view == 'virtuemart' //Virtuemart view is always allowed since this is the page we redirect to in case the user does not have the rights
or $view == 'about' //About view always displayed
or $this->manager($view) ) {
//or $this->canDo->get('core.admin')
//or $this->canDo->get('vm.'.$view) ) { //Super administrators always have access
if(JFactory::getApplication()->isSite()){
$unoverridable = array('category','manufacturer','user'); //This views have the same name and must not be overridable
if(!in_array($view,$unoverridable)){
if(!class_exists('VmTemplate')) require(VMPATH_SITE.DS.'helpers'.DS.'vmtemplate.php');
$template = VmTemplate::getDefaultTemplate();
$this->addTemplatePath (VMPATH_ROOT . DS. 'templates' . DS . $template['template'] . DS. 'html' . DS . 'com_virtuemart' .DS . $this->_name);
}
}
$result = $this->loadTemplate($tpl);
if ($result instanceof Exception) {
return $result;
}
echo $result;
if($this->writeJs){
vmJsApi::keepAlive();
echo vmJsApi::writeJS();
}
return true;
} else {
JFactory::getApplication()->redirect( 'index.php?option=com_virtuemart', vmText::_('JERROR_ALERTNOAUTHOR'), 'error');
}
}
/*
* set all commands and options for BE default.php views
* return $list filter_order and
*/
function addStandardDefaultViewCommands($showNew=true, $showDelete=true, $showHelp=true) {
$view = vRequest::getCmd('view', vRequest::getCmd('controller','virtuemart'));
JToolBarHelper::divider();
if(vmAccess::manager($view.'.edit.state')){
JToolBarHelper::publishList();
JToolBarHelper::unpublishList();
}
if(vmAccess::manager($view.'.edit')){
JToolBarHelper::editList();
}
if(vmAccess::manager($view.'.create')){
JToolBarHelper::addNew();
}
if(vmAccess::manager($view.'.delete')){
JToolBarHelper::spacer('10');
JToolBarHelper::deleteList();
}
JToolBarHelper::divider();
JToolBarHelper::spacer('2');
self::showACLPref($view);
self::showHelp ( $showHelp);
if(JFactory::getApplication()->isSite()){
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton('Link', 'back', 'COM_VIRTUEMART_LEAVE', 'index.php?option=com_virtuemart&manage=0');
}
$this->addJsJoomlaSubmitButton();
// javascript for cookies setting in case of press "APPLY"
}
function addJsJoomlaSubmitButton($validate=false){
static $done=array(false,false);
if(!$done[$validate]){
if($validate){
vmJsApi::vmValidator();
$form = "if( (a=='apply' || a=='save') && myValidator(form,false)){
form.submit();
} else if(a!='apply' && a!='save'){
form.submit();
}";
} else {
$form = "form.submit();";
}
}
$j = "
Joomla.submitbutton=function(a){
var options = { path: '/', expires: 2}
if (a == 'apply') {
var idx = jQuery('#tabs li.current').index();
jQuery.cookie('vmapply', idx, options);
} else {
jQuery.cookie('vmapply', '0', options);
}
jQuery( '#media-dialog' ).remove();
form = document.getElementById('adminForm');
form.task.value = a;
".$form."
return false;
};
links = jQuery('a[onclick].toolbar');
links.each(function(){
var onClick = new String(this.onclick);
jQuery(this).click(function(e){
//console.log('click ');
e.stopImmediatePropagation();
e.preventDefault();
});
});";
vmJsApi::addJScript('submit', $j,false, true);
$done[$validate]=true;
}
/**
* set pagination and filters
* return Array() $list( filter_order and dir )
*/
function addStandardDefaultViewLists($model, $default_order = 0, $default_dir = 'DESC',$name = 'search') {
// set list filters
$option = vRequest::getCmd('option');
$view = vRequest::getCmd('view', vRequest::getCmd('controller','virtuemart'));
$app = JFactory::getApplication();
$this->lists[$name] = $app->getUserStateFromRequest($option . '.' . $view . '.'.$name, $name, '', 'string');
$this->lists['filter_order'] = $this->getValidFilterOrder($app,$model,$view,$default_order);
$toTest = $app->getUserStateFromRequest( 'com_virtuemart.'.$view.'.filter_order_Dir', 'filter_order_Dir', $default_dir, 'cmd' );
$this->lists['filter_order_Dir'] = $model->checkFilterDir($toTest);
}
function getValidFilterOrder($app,$model,$view,$default_order){
if($default_order===0){
$default_order = $model->getDefaultOrdering();
}
$toTest = $app->getUserStateFromRequest( 'com_virtuemart.'.$view.'.filter_order', 'filter_order', $default_order, 'cmd' );
return $model->checkFilterOrder($toTest);
}
/**
* Add simple search to form
* @param $searchLabel text to display before searchbox
* @param $name lists and id name
* ??vmText::_('COM_VIRTUEMART_NAME')
*/
function displayDefaultViewSearch($searchLabel='COM_VIRTUEMART_NAME',$name ='search') {
return vmText::_('COM_VIRTUEMART_FILTER') . ' ' . vmText::_($searchLabel) . ':
<input type="text" name="' . $name . '" id="' . $name . '" value="' .$this->lists[$name] . '" class="text_area" />
<button class="btn btn-small" onclick="this.form.submit();">' . vmText::_('COM_VIRTUEMART_GO') . '</button>
<button class="btn btn-small" onclick="document.getElementById(\'' . $name . '\').value=\'\';this.form.submit();">' . vmText::_('COM_VIRTUEMART_RESET') . '</button>';
}
function addStandardEditViewCommands($id = 0,$object = null) {
$view = vRequest::getCmd('view', vRequest::getCmd('controller','virtuemart'));
if (!class_exists('JToolBarHelper')) require(JPATH_ADMINISTRATOR.DS.'includes'.DS.'toolbar.php');
JToolBarHelper::divider();
if (vmAccess::manager($view.'.edit')) {
JToolBarHelper::save();
JToolBarHelper::apply();
}
JToolBarHelper::cancel();
self::showHelp();
self::showACLPref($view);
if($view != 'shipmentmethod' and $view != 'paymentmethod' and $view != 'media') $validate = true; else $validate = false;
$this->addJsJoomlaSubmitButton($validate);
$editView = vRequest::getCmd('view',vRequest::getCmd('controller','' ) );
$params = JComponentHelper::getParams('com_languages');
$selectedLangue = $params->get('site', 'en-GB');
$this->lang = strtolower(strtr($selectedLangue,'-','_'));
// Get all the published languages defined in Language manager > Content
$allLanguages = JLanguageHelper::getLanguages();
foreach ($allLanguages as $jlang) {
$languagesByCode[$jlang->lang_code]=$jlang;
}
// only add if ID and view not null
if ($editView and $id and (count(vmconfig::get('active_languages'))>1) ) {
if ($editView =='user') $editView ='vendor';
jimport('joomla.language.helper');
$this->lang = vRequest::getVar('vmlang', $this->lang);
// list of languages installed in #__extensions (may be more than the ones in the Language manager > Content if the user did not added them)
$languages = JLanguageHelper::createLanguageList($selectedLangue, constant('VMPATH_ROOT'), true);
$activeVmLangs = (vmconfig::get('active_languages') );
$flagCss="";
foreach ($languages as $k => &$joomlaLang) {
if (!in_array($joomlaLang['value'], $activeVmLangs) ) {
unset($languages[$k] );
} else {
$key=$joomlaLang['value'];
if(!isset($languagesByCode[$key])){
$img = substr($key,0,2);//We try a fallback
vmdebug('COM_VIRTUEMART_MISSING_FLAG',$img,$joomlaLang['text']);
} else {
$img=$languagesByCode[$key]->image;
}
$image_flag= VMPATH_ROOT."/media/mod_languages/images/".$img.".gif";
$image_flag_url= JURI::root()."media/mod_languages/images/".$img.".gif";
if (!file_exists ($image_flag)) {
vmerror(vmText::sprintf('COM_VIRTUEMART_MISSING_FLAG', $image_flag,$joomlaLang['text'] ) );
} else {
$flagCss .="td.flag-".$key.",.flag-".$key."{background: url( ".$image_flag_url.") no-repeat 0 0; padding-left:20px !important;}\n";
}
}
}
JFactory::getDocument()->addStyleDeclaration($flagCss);
$this->langList = JHtml::_('select.genericlist', $languages, 'vmlang', 'class="inputbox" style="width:176px;"', 'value', 'text', $selectedLangue , 'vmlang');
if ($editView =='product') {
$productModel = VmModel::getModel('product');
$childproducts = $productModel->getProductChilds($id) ? $productModel->getProductChilds($id) : '';
}
$token = vRequest::getFormToken();
$j = '
jQuery(function($) {
var oldflag = "";
$("select#vmlang").chosen().change(function() {
langCode = $(this).find("option:selected").val();
flagClass = "flag-"+langCode;
jQuery.ajax({
type: "GET",
cache: false,
dataType: "json",
url: "index.php?option=com_virtuemart&view=translate&task=paste&format=json&lg="+langCode+"&id='.$id.'&editView='.$editView.'&'.$token.'=1",
}).done(
function(data) {
var items = [];
var theForm = document.forms["adminForm"];
if(typeof theForm.vmlang==="undefined"){
var input = document.createElement("input");
input.type = "hidden";
input.name = "vmlang";
input.value = langCode;
theForm.appendChild(input);
} else {
theForm.vmlang.value = langCode;
}
if (data.fields !== "error" ) {
if (data.structure == "empty") alert(data.msg);
$.each(data.fields , function(key, val) {
cible = jQuery("#"+key);
if (oldflag !== "") cible.parent().removeClass(oldflag)
var tmce_ver = 0;
if(typeof window.tinyMCE!=="undefined"){
var tmce_ver=window.tinyMCE.majorVersion;
}
if (tmce_ver>="4") {
if (cible.parent().addClass(flagClass).children().hasClass("mce_editable") && data.structure !== "empty" ) {
tinyMCE.get(key).execCommand("mceSetContent", false,val);
cible.val(val);
} else if (data.structure !== "empty") cible.val(val);
} else {
if (cible.parent().addClass(flagClass).children().hasClass("mce_editable") && data.structure !== "empty" ) {
tinyMCE.execInstanceCommand(key,"mceSetContent",false,val);
cible.val(val);
} else if (data.structure !== "empty") cible.val(val);
}
});
} else alert(data.msg);';
if($editView =='product' && !empty($childproducts)) {
foreach($childproducts as $child) {
$j .= 'jQuery.ajax({
type: "GET",
cache: false,
dataType: "json",
url: "index.php?option=com_virtuemart&view=translate&task=paste&format=json&lg="+langCode+"&id='.$child->virtuemart_product_id.'&editView='.$editView.'&'.$token.'=1",
}).done(
// $.getJSON( "index.php?option=com_virtuemart&view=translate&task=paste&format=json&lg="+langCode+"&id='.$child->virtuemart_product_id.'&editView='.$editView.'&'.$token.'=1" ,
function(data) {
cible = jQuery("#child'. $child->virtuemart_product_id .'product_name");
if (oldflag !== "") cible.parent().removeClass(oldflag)
cible.parent().addClass(flagClass);
cible.val(data.fields.product_name);
jQuery("#child'. $child->virtuemart_product_id .'slug").val(data.fields["slug"]);
}
)
';
}
}
$j .= 'oldflag = flagClass ;
}
)
});
})';
vmJsApi::addJScript('vmlang', $j);
} else {
$jlang = JFactory::getLanguage();
$langs = $jlang->getKnownLanguages();
$defautName = $selectedLangue;
$flagImg = $selectedLangue;
if(isset($languagesByCode[$selectedLangue])){
$defautName = $langs[$selectedLangue]['name'];
$flagImg= JHtml::_('image', 'mod_languages/'. $languagesByCode[$selectedLangue]->image.'.gif', $languagesByCode[$selectedLangue]->title_native, array('title'=> $languagesByCode[$selectedLangue]->title_native), true);
} else {
vmWarn(vmText::sprintf('COM_VIRTUEMART_MISSING_FLAG',$selectedLangue,$selectedLangue));
}
$this->langList = '<input name ="vmlang" type="hidden" value="'.$selectedLangue.'" >'.$flagImg.' <b> '.$defautName.'</b>';
}
if(JFactory::getApplication()->isSite()){
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton('Link', 'back', 'COM_VIRTUEMART_LEAVE', 'index.php?option=com_virtuemart&manage=0');
}
}
function SetViewTitle($name ='', $msg ='',$icon ='') {
$view = vRequest::getCmd('view', vRequest::getCmd('controller'));
if ($name == '')
$name = strtoupper($view);
if ($icon == '')
$icon = strtolower($view);
if (!$task = vRequest::getCmd('task'))
$task = 'list';
if (!empty($msg)) {
$msg = ' <span style="color: #666666; font-size: large;">' . $msg . '</span>';
}
$viewText = vmText::_('COM_VIRTUEMART_' . strtoupper($name));
$taskName = ' <small><small>[ ' . vmText::_('COM_VIRTUEMART_' . $task) . ' ]</small></small>';
JToolBarHelper::title($viewText . ' ' . $taskName . $msg, 'head vm_' . $icon . '_48');
$this->assignRef('viewName',$viewText); //was $viewName?
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$doc->setTitle($app->getCfg('sitename'). ' - ' .vmText::_('JADMINISTRATION').' - '.strip_tags($msg));
}
function sort($orderby ,$name=null ){
if (!$name) $name= 'COM_VIRTUEMART_'.strtoupper ($orderby);
return JHtml::_('grid.sort' , vmText::_($name) , $orderby , $this->lists['filter_order_Dir'] , $this->lists['filter_order']);
}
public function addStandardHiddenToForm($controller=null, $task=''){
if (!$controller) $controller = vRequest::getCmd('view');
$option = vRequest::getCmd('option','com_virtuemart' );
$hidden ='';
if (array_key_exists('filter_order',$this->lists)) {
$hidden ='
<input type="hidden" name="filter_order" value="'.$this->lists['filter_order'].'" />
<input type="hidden" name="filter_order_Dir" value="'.$this->lists['filter_order_Dir'].'" />';
}
if(vRequest::get('manage',false) or JFactory::getApplication()->isSite()){
$hidden .='<input type="hidden" name="manage" value="1" />';
}
return $hidden.'
<input type="hidden" name="task" value="'.$task.'" />
<input type="hidden" name="option" value="'.$option.'" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="controller" value="'.$controller.'" />
<input type="hidden" name="view" value="'.$controller.'" />
'. JHtml::_( 'form.token' );
}
/**
* Additional grid function for custom toggles
*
* @return string HTML code to write the toggle button
*/
function toggle( $field, $i, $toggle, $imgY = 'tick.png', $imgX = 'publish_x.png', $untoggleable = false )
{
$img = $field ? $imgY : $imgX;
if ($toggle == 'published') {
// Stay compatible with grid.published
$task = $field ? 'unpublish' : 'publish';
$alt = $field ? vmText::_('COM_VIRTUEMART_PUBLISHED') : vmText::_('COM_VIRTUEMART_UNPUBLISHED');
$action = $field ? vmText::_('COM_VIRTUEMART_UNPUBLISH_ITEM') : vmText::_('COM_VIRTUEMART_PUBLISH_ITEM');
} else {
$task = $field ? $toggle.'.0' : $toggle.'.1';
$alt = $field ? vmText::_('COM_VIRTUEMART_PUBLISHED') : vmText::_('COM_VIRTUEMART_DISABLED');
$action = $field ? vmText::_('COM_VIRTUEMART_DISABLE_ITEM') : vmText::_('COM_VIRTUEMART_ENABLE_ITEM');
}
$img = 'admin/' . $img;
if ($untoggleable) {
$attribs='style="opacity: 0.6;"';
} else {
$attribs='';
}
$image = JHtml::_('image', $img, $alt, $attribs, true);
if($untoggleable) return $image;
if (JVM_VERSION < 3){
return ('<a href="javascript:void(0);" onclick="return listItemTask(\'cb'. $i .'\',\''. $task .'\')" title="'. $action .'">'
. $image .'</a>');
} else {
$icon = $field ? 'publish' : 'unpublish';
return ('<a href="javascript:void(0);" onclick="return listItemTask(\'cb'. $i .'\',\''. $task .'\')" title="'. $action .'">'
. '<span class="icon-'.$icon.'"><span>' .'</a>');
}
}
function gridPublished($name,$i) {
if (JVM_VERSION < 3){
$published = JHtml::_('grid.published', $name, $i );
} else {
$published = JHtml::_('jgrid.published', $name->published, $i );
}
return $published;
}
function showhelp(){
/* http://docs.joomla.org/Help_system/Adding_a_help_button_to_the_toolbar */
$task=vRequest::getCmd('task', '');
$view=vRequest::getCmd('view', '');
if ($task) {
if ($task=="add") {
$task="edit";
}
$task ="_".$task;
}
if (!class_exists( 'VmConfig' )) require(VMPATH_ADMIN .'/helpers/config.php');
VmConfig::loadConfig();
VmConfig::loadJLang('com_virtuemart_help');
$lang = JFactory::getLanguage();
$key= 'COM_VIRTUEMART_HELP_'.$view.$task;
if ($lang->hasKey($key)) {
$help_url = vmText::_($key)."?tmpl=component";
$bar = JToolBar::getInstance('toolbar');
$bar->appendButton( 'Popup', 'help', 'JTOOLBAR_HELP', $help_url, 960, 500 );
}
}
function showACLPref(){
if (vmAccess::manager('core')) {
JToolBarHelper::divider();
$bar = JToolBar::getInstance('toolbar');
if(JVM_VERSION<3){
$bar->appendButton('Popup', 'lock', 'JCONFIG_PERMISSIONS_LABEL', 'index.php?option=com_config&view=component&component=com_virtuemart&tmpl=component', 875, 550, 0, 0, '');
} else {
$bar->appendButton('Link', 'lock', 'JCONFIG_PERMISSIONS_LABEL', 'index.php?option=com_config&view=component&component=com_virtuemart');
}
}
}
/**
* Checks if we show multivendor related stuff for admins
* @return bool|null
*/
public function showVendors(){
if($this->showVendors===null){
if(VmConfig::get('multix','none')!='none' and vmAccess::manager('managevendors')){
$this->showVendors = true;
} else {
$this->showVendors = false;
}
}
return $this->showVendors;
}
public function manager($view=0) {
if(empty($view)) $view = $this->_name;
return vmAccess::manager($view);
}
}