oxadmindetails.php

Go to the documentation of this file.
00001 <?php
00002 
00006 require_once "oxajax.php";
00007 
00011 class oxAdminDetails extends oxAdminView
00012 {
00018     protected $_oEditor   = null;
00019 
00025     public function render()
00026     {
00027         $sReturn = parent::render();
00028 
00029         // generate help link
00030         $myConfig = $this->getConfig();
00031         $sDir = $myConfig->getConfigParam( 'sShopDir' ) . '/documentation/admin';
00032         if ( is_dir( $sDir ) ) {
00033             $sDir = $myConfig->getConfigParam( 'sShopURL' ) . 'documentation/admin';
00034         } else {
00035 
00036                 $oShop = $this->_getEditShop( oxSession::getVar( 'actshop' ) );
00037                 //$sDir = "http://docu.oxid-esales.com/PE/{$oShop->oxshops__oxversion->value}/" . $myConfig->getConfigParam( 'iAdminLanguage' ) . '/admin';
00038                 $sDir = "http://docu.oxid-esales.com/PE/{$oShop->oxshops__oxversion->value}/" . oxLang::getInstance()->getTplLanguage() . '/admin';
00039         }
00040 
00041         $this->_aViewData['sHelpURL'] = $sDir;
00042 
00043         return $sReturn;
00044     }
00045 
00057     protected function _generateTextEditor( $iWidth, $iHeight, $oObject, $sField, $sStylesheet = null )
00058     {
00059         $myConfig = $this->getConfig();
00060 
00061         // include the config file and editor class:
00062         $sEditorPath = 'wysiwigpro';
00063         $sEditorFile = getShopBasePath()."admin/".$sEditorPath . '/wysiwygPro.class.php';
00064 
00065 
00066 
00067         $sEditObjectValue = '';
00068         if ( $oObject ) {
00069             $sInitialValue = '';
00070             if ($oObject->$sField instanceof oxField) {
00071                 $sInitialValue = $oObject->$sField->getRawValue();
00072             } else {
00073                 $sInitialValue = $oObject->$sField->value;
00074             }
00075             $oObject->$sField = new oxField(str_replace( array( '[{$shop->currenthomedir}]', '[{$oViewConf->getCurrentHomeDir()}]' ), $myConfig->getCurrentShopURL(), $sInitialValue ), oxField::T_RAW);
00076             $sEditObjectValue = $oObject->$sField->value;
00077         }
00078 
00079 
00080         if (!$sEditorFile || !file_exists($sEditorFile)) {
00081             if (strpos($iWidth, '%') === false) {
00082                 $iWidth .= 'px';
00083             }
00084             if (strpos($iHeight, '%') === false) {
00085                 $iHeight .= 'px';
00086             }
00087             return "<textarea id='editor_{$sField}' style='width:{$iWidth}; height:{$iHeight};'>$sEditObjectValue</textarea>";
00088         }
00089 
00090         include_once ($sEditorFile);
00091 
00092         // create a new instance of the wysiwygPro class:
00093         $this->_oEditor = new wysiwygPro();
00094 
00095         // set language file name
00096         $sEditorUrl = $myConfig->getConfigParam( 'sShopURL' ).$myConfig->getConfigParam( 'sAdminDir' )."/{$sEditorPath}/";
00097         if ( $sAdminSSLURL = $myConfig->getConfigParam( 'sAdminSSLURL' ) ) {
00098             $sEditorUrl = "{$sAdminSSLURL}/{$sEditorPath}/";
00099         }
00100 
00101         $this->_oEditor->editorURL = $sEditorUrl;
00102         $this->_oEditor->urlFormat = 'preserve';
00103 
00104         // document & image directory:
00105         $this->_oEditor->documentDir = $this->_oEditor->imageDir = $myConfig->getPictureDir( false ).'wysiwigpro/';
00106         $this->_oEditor->documentURL = $this->_oEditor->imageURL = $myConfig->getPictureUrl( null, false ).'wysiwigpro/';
00107 
00108         // enabling upload
00109         $this->_oEditor->upload = true;
00110 
00111         // setting empty value
00112         $this->_oEditor->emptyValue = "";
00113 
00114         //#M432 enabling deleting files and folders
00115         $this->_oEditor->deleteFiles = true;
00116         $this->_oEditor->deleteFolders = true;
00117 
00118         // allowed image extensions
00119         $this->_oEditor->allowedImageExtensions = '.jpg, .jpeg, .gif, .png';
00120 
00121         // allowed document extensions
00122         $this->_oEditor->allowedDocExtensions   = '.html, .htm, .pdf, .doc, .rtf, .txt, .xl, .xls, .ppt, .pps, .zip, .tar, .swf, .wmv, .rm, .mov, .jpg, .jpeg, .gif, .png';
00123 
00124         // set name
00125         $this->_oEditor->name = $sField;
00126 
00127         // set language file name
00128         $oLang = oxLang::getInstance();
00129         $this->_oEditor->lang = $oLang->translateString( 'editor_language', $oLang->getTplLanguage() );
00130 
00131         // set contents
00132         if ( $sEditObjectValue ) {
00133             $this->_oEditor->value = $sEditObjectValue;
00134         }
00135 
00136         // parse for styles and add them
00137         $this->setAdminMode( false );
00138         $sCSSPath = $myConfig->getResourcePath("styles/{$sStylesheet}", false );
00139         $sCSSUrl  = $myConfig->getResourceUrl("styles/{$sStylesheet}", false );
00140 
00141         $aCSSPaths = array();
00142 
00143         // #1157C - in wysiwigpro editor font problem
00144         $aCSSPaths[] = $myConfig->getResourcePath("oxid.css", false );
00145 
00146         $this->setAdminMode( true );
00147 
00148         if (is_file($sCSSPath)) {
00149 
00150             $aCSSPaths[] = $sCSSUrl;
00151 
00152             if (is_readable($sCSSPath)) {
00153                 $aCSS = @file( $sCSSPath);
00154                 if ( isset( $aCSS) && $aCSS) {
00155                     $aClasses = array();
00156                     $oStr = getStr();
00157                     foreach ( $aCSS as $key => $sLine ) {
00158                         $sLine = trim($sLine);
00159 
00160                         if ( $sLine[0] == '.' && !strstr( $sLine, 'default' ) ) {
00161                             // found one tag
00162                             $sTag = $oStr->substr( $sLine, 1);
00163                             $iEnd = $oStr->strpos( $sTag, ' ' );
00164                             if ( !isset( $iEnd ) || !$iEnd ) {
00165                                 $iEnd = $oStr->strpos( $sTag, '\n' );
00166                             }
00167 
00168                             if ( $sTag = $oStr->substr( $sTag, 0, $iEnd ) ) {
00169                                 $aClasses["span class='{$sTag}'"] = $sTag;
00170                             }
00171                         }
00172                     }
00173                     $this->_oEditor->stylesMenu = $aClasses;
00174                 }
00175             }
00176         }
00177 
00178         foreach ( $aCSSPaths as $sCssPath ) {
00179             $this->_oEditor->addStylesheet( $sCssPath );
00180         }
00181 
00182         //while there is a bug in editor template filter we cannot use this feature
00183         // loading template filter plugin
00184         $this->_oEditor->loadPlugin( 'templateFilter' );
00185         $this->_oEditor->plugins['templateFilter']->protect( '[{', '}]' );
00186         if ( $myConfig->getConfigParam( 'bl_perfParseLongDescinSmarty' ) ) {
00187             $this->_oEditor->plugins['templateFilter']->assign( '[{$oViewConf->getCurrentHomeDir()}]', $myConfig->getShopURL() );
00188             $this->_oEditor->plugins['templateFilter']->assign( '[{$oViewConf->getCurrentHomeDir()}]', $myConfig->getSSLShopURL() );
00189         }
00190 
00191         // generate and return editor code
00192         return $this->_oEditor->fetch( $iWidth, $iHeight );
00193     }
00194 
00200     public function resetNrOfCatArticles()
00201     {
00202         // resetting categories article count cache
00203         $this->resetContentCache();
00204     }
00205 
00211     public function resetNrOfVendorArticles()
00212     {
00213         // resetting vendors cache
00214         $this->resetContentCache();
00215     }
00216 
00222     public function resetNrOfManufacturerArticles()
00223     {
00224         // resetting manufacturers cache
00225         $this->resetContentCache();
00226     }
00227 
00240     protected function _getCategoryTree( $sTplVarName, $sSelectedCatId, $sEditCatId = '', $blForceNonCache = false, $iTreeShopId = null )
00241     {
00242         // caching category tree, to load it once, not many times
00243         if ( !isset( $this->oCatTree ) || $blForceNonCache ) {
00244             $this->oCatTree = oxNew( 'oxCategoryList' );
00245             $this->oCatTree->setShopID( $iTreeShopId );
00246             $this->oCatTree->buildList( $this->getConfig()->getConfigParam( 'bl_perfLoadCatTree' ) );
00247         }
00248 
00249         // copying tree
00250         $oCatTree = $this->oCatTree;
00251         //removing current category
00252         if ( $sEditCatId && isset( $oCatTree[$sEditCatId] ) ) {
00253             unset( $oCatTree[$sEditCatId] );
00254         }
00255 
00256         // add first fake category for not assigned articles
00257         $oRoot = oxNew( 'oxcategory' );
00258         $oRoot->oxcategories__oxtitle = new oxField('--');
00259 
00260         $oCatTree->assign( array_merge( array( '' => $oRoot ), $oCatTree->getArray() ) );
00261 
00262         // mark selected
00263         if ( $sSelectedCatId ) {
00264             // fixed parent category in select list
00265             foreach ($oCatTree as $oCategory) {
00266                 if ($oCategory->getId() == $sSelectedCatId ) {
00267                     $oCategory->selected = 1;
00268                     break;
00269                 }
00270             }
00271         } else { // no category selected - opening first available
00272             $oCatTree->rewind();
00273             if ( $oCat = $oCatTree->current() ) {
00274                 $oCat->selected = 1;
00275                 $sSelectedCatId = $oCat->getId();
00276             }
00277         }
00278 
00279         // passing to view
00280         $this->_aViewData[$sTplVarName] =  $oCatTree;
00281 
00282         return $sSelectedCatId;
00283     }
00284 
00290     public function changeFolder()
00291     {
00292         $sFolder = oxConfig::getParameter( 'setfolder' );
00293         $sFolderClass = oxConfig::getParameter( 'folderclass' );
00294 
00295         if ( $sFolderClass == 'oxcontent' && $sFolder == 'CMSFOLDER_NONE' ) {
00296             $sFolder = '';
00297         }
00298 
00299         $oObject = oxNew( $sFolderClass );
00300         if ( $oObject->load( oxConfig::getParameter( 'oxid' ) ) ) {
00301             $oObject->{$oObject->getCoreTableName() . '__oxfolder'} = new oxField($sFolder);
00302             $oObject->save();
00303         }
00304     }
00305 
00313     protected function _setupNavigation( $sNode )
00314     {
00315         // navigation according to class
00316         if ( $sNode ) {
00317 
00318             $myAdminNavig = $this->getNavigation();
00319 
00320             // default tab
00321             $this->_aViewData['default_edit'] = $myAdminNavig->getActiveTab( $sNode, $this->_iDefEdit );
00322 
00323             // buttons
00324             $this->_aViewData['bottom_buttons'] = $myAdminNavig->getBtn( $sNode );
00325         }
00326     }
00327 
00335     protected function _resetCounts( $aIds )
00336     {
00337         $oUtils = oxUtilsCount::getInstance();
00338         foreach ( $aIds as $sType => $aResetInfo ) {
00339             foreach ( $aResetInfo as $sResetId => $iPos ) {
00340                 switch ( $sType ) {
00341                     case 'vendor':
00342                         $this->resetCounter( "vendorArticle", $sResetId );
00343                         break;
00344                     case 'manufacturer':
00345                         $this->resetCounter( "manufacturerArticle", $sResetId );
00346                         break;
00347                 }
00348             }
00349         }
00350     }
00351 }

Generated on Tue Apr 21 15:45:44 2009 for OXID eShop CE by  doxygen 1.5.5