Public Member Functions | |
preInit () | |
First initialization. | |
doProcessData () | |
Detects, if a save command has been triggered. | |
processData () | |
Do processing of data, submitting it to TCEmain. | |
init () | |
Initialize the normal module operation. | |
main () | |
Main module operation. | |
printContent () | |
Outputting the accumulated content to screen. | |
makeEditForm () | |
Creates the editing form with TCEforms, based on the input from GPvars. | |
makeButtonPanel () | |
Create the panel of buttons for submitting the form or otherwise perform operations. | |
makeDocSel () | |
Create the selector box form element which allows to select between open documents. | |
makeCmenu () | |
Create the selector box form element which allows to select a clear-cache operation. | |
compileForm ($panel, $docSel, $cMenu, $editForm) | |
Put together the various elements (buttons, selectors, form) into a table. | |
functionMenus () | |
Create the checkbox buttons in the bottom of the pages. | |
shortCutLink () | |
Create shortcut and open-in-window link in the bottom of the page. | |
tceformMessages () | |
Reads comment messages from TCEforms and prints them in a HTML comment in the buttom of the page. | |
editRegularContentFromId () | |
Function, which populates the internal editconf array with editing commands for all tt_content elements from the normal column in normal language from the page pointed to by $this->editRegularContentFromId. | |
compileStoreDat () | |
Populates the variables $this->storeArray, $this->storeUrl, $this->storeUrlMd5. | |
getNewIconMode ($table, $key='saveDocNew') | |
Function used to look for configuration of buttons in the form: Fx. | |
closeDocument ($code=0) | |
Handling the closing of a document. | |
setDocument ($currentDocFromHandlerMD5='', $retUrl='alt_doc_nodoc.php') | |
Redirects to the document pointed to by $currentDocFromHandlerMD5 OR $retUrl (depending on some internal calculations). | |
Public Attributes | |
$editconf | |
$columnsOnly | |
$defVals | |
$overrideVals | |
$returnUrl | |
$closeDoc | |
$doSave | |
$data | |
$mirror | |
$cacheCmd | |
$redirect | |
$disableRTE | |
$returnNewPageId | |
$vC | |
$popViewId | |
$popViewId_addParams | |
$viewUrl | |
$editRegularContentFromId | |
$recTitle | |
$disHelp | |
$noView | |
$returnEditConf | |
$doc | |
$content | |
$retUrl | |
$R_URL_parts | |
$R_URL_getvars | |
$R_URI | |
$storeTitle | |
$storeArray | |
$storeUrl | |
$storeUrlMd5 | |
$docDat | |
$docHandler | |
$elementsData | |
$firstEl | |
$errorC | |
$newC | |
$viewId | |
$viewId_addParams | |
$modTSconfig | |
$tceforms | |
$generalPathOfForm | |
$dontStoreDocumentRef |
|
Handling the closing of a document.
Definition at line 1074 of file alt_doc.php. Referenced by preInit(), and processData(). 01074 { 01075 global $BE_USER; 01076 01077 // If current document is found in docHandler, then unset it, possibly unset it ALL and finally, write it to the session data: 01078 if (isset($this->docHandler[$this->storeUrlMd5])) { 01079 unset($this->docHandler[$this->storeUrlMd5]); 01080 if ($code=='3') $this->docHandler=array(); 01081 $BE_USER->pushModuleData('alt_doc.php',array($this->docHandler,$this->docDat[1])); 01082 } 01083 01084 // If ->returnEditConf is set, then add the current content of editconf to the ->retUrl variable: (used by other scripts, like wizard_add, to know which records was created or so...) 01085 if ($this->returnEditConf && $this->retUrl!='dummy.php') { 01086 $this->retUrl.='&returnEditConf='.rawurlencode(serialize($this->editconf)); 01087 } 01088 01089 // If code is NOT set OR set to 1, then make a header location redirect to $this->retUrl 01090 if (!$code || $code==1) { 01091 Header('Location: '.t3lib_div::locationHeaderUrl($this->retUrl)); 01092 exit; 01093 } else { 01094 $this->setDocument('',$this->retUrl); 01095 } 01096 }
|
|
Put together the various elements (buttons, selectors, form) into a table.
Definition at line 859 of file alt_doc.php. References menu(), and table(). 00859 { 00860 global $LANG; 00861 00862 00863 $formContent=''; 00864 $formContent.=' 00865 00866 <!-- 00867 Header of the editing page. 00868 Contains the buttons for saving/closing, the document selector and menu selector. 00869 Shows the path of the editing operation as well. 00870 --> 00871 <table border="0" cellpadding="0" cellspacing="1" width="470" id="typo3-altdoc-header"> 00872 <tr> 00873 <td nowrap="nowrap" valign="top">'.$panel.'</td> 00874 <td nowrap="nowrap" valign="top" align="right">'.$docSel.$cMenu.'</td> 00875 </tr> 00876 <tr> 00877 <td colspan="2">'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.path',1).': '.htmlspecialchars($this->generalPathOfForm).'</td> 00878 </tr> 00879 </table> 00880 <img src="clear.gif" width="1" height="4" alt="" /><br /> 00881 00882 00883 00884 00885 <!-- 00886 EDITING FORM: 00887 --> 00888 00889 '.$editForm.' 00890 00891 00892 00893 <!-- 00894 Saving buttons (same as in top) 00895 --> 00896 00897 '.$panel. 00898 '<input type="hidden" name="returnUrl" value="'.htmlspecialchars($this->retUrl).'" /> 00899 <input type="hidden" name="viewUrl" value="'.htmlspecialchars($this->viewUrl).'" />'; 00900 00901 if ($this->returnNewPageId) { 00902 $formContent.='<input type="hidden" name="returnNewPageId" value="1" />'; 00903 } 00904 $formContent.='<input type="hidden" name="popViewId" value="'.htmlspecialchars($this->viewId).'" />'; 00905 if ($this->viewId_addParams) { 00906 $formContent.='<input type="hidden" name="popViewId_addParams" value="'.htmlspecialchars($this->viewId_addParams).'" />'; 00907 } 00908 $formContent.='<input type="hidden" name="closeDoc" value="0" />'; 00909 $formContent.='<input type="hidden" name="doSave" value="0" />'; 00910 $formContent.='<input type="hidden" name="_serialNumber" value="'.md5(microtime()).'" />'; 00911 $formContent.='<input type="hidden" name="_disableRTE" value="'.$this->tceforms->disableRTE.'" />'; 00912 00913 return $formContent; 00914 }
|
|
Populates the variables $this->storeArray, $this->storeUrl, $this->storeUrlMd5.
Definition at line 1048 of file alt_doc.php. Referenced by preInit(), and processData(). 01048 { 01049 $this->storeArray = t3lib_div::compileSelectedGetVarsFromArray('edit,defVals,overrideVals,columnsOnly,disHelp,noView,editRegularContentFromId',$this->R_URL_getvars); 01050 $this->storeUrl = t3lib_div::implodeArrayForUrl('',$this->storeArray); 01051 $this->storeUrlMd5 = md5($this->storeUrl); 01052 }
|
|
Detects, if a save command has been triggered.
Definition at line 219 of file alt_doc.php. References $out. 00219 { 00220 $out = $this->doSave || isset($_POST['_savedok_x']) || isset($_POST['_saveandclosedok_x']) || isset($_POST['_savedokview_x']) || isset($_POST['_savedoknew_x']); 00221 return $out; 00222 }
|
|
Function, which populates the internal editconf array with editing commands for all tt_content elements from the normal column in normal language from the page pointed to by $this->editRegularContentFromId.
Definition at line 1021 of file alt_doc.php. References t3lib_extMgm::isLoaded(). Referenced by init(). 01021 { 01022 if (t3lib_extMgm::isLoaded('cms')) { 01023 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 01024 'uid', 01025 'tt_content', 01026 'pid='.intval($this->editRegularContentFromId). 01027 t3lib_BEfunc::deleteClause('tt_content'). 01028 ' AND colPos=0 AND sys_language_uid=0', 01029 '', 01030 'sorting' 01031 ); 01032 if ($GLOBALS['TYPO3_DB']->sql_num_rows($res)) { 01033 $ecUids=array(); 01034 while($ecRec = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { 01035 $ecUids[]=$ecRec['uid']; 01036 } 01037 $this->editconf['tt_content'][implode(',',$ecUids)]='edit'; 01038 } 01039 } 01040 }
|
|
Create the checkbox buttons in the bottom of the pages.
Definition at line 921 of file alt_doc.php. 00921 { 00922 global $BE_USER,$LANG; 00923 00924 $funcMenus = ''; 00925 00926 // Show palettes: 00927 $funcMenus.= '<br /><br />'.t3lib_BEfunc::getFuncCheck('','SET[showPalettes]',$this->MOD_SETTINGS['showPalettes'],'alt_doc.php',t3lib_div::implodeArrayForUrl('',array_merge($this->R_URL_getvars,array('SET'=>'')))).$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.showPalettes',1); 00928 00929 // Show descriptions/help texts: 00930 if ($BE_USER->uc['edit_showFieldHelp']!='text') { 00931 $funcMenus.= '<br />'.t3lib_BEfunc::getFuncCheck('','SET[showDescriptions]',$this->MOD_SETTINGS['showDescriptions'],'alt_doc.php',t3lib_div::implodeArrayForUrl('',array_merge($this->R_URL_getvars,array('SET'=>'')))).$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.showDescriptions',1); 00932 } 00933 00934 // Show disable RTE checkbox: 00935 if ($BE_USER->isRTE()) { 00936 $funcMenus.= '<br />'.t3lib_BEfunc::getFuncCheck('','SET[disableRTE]',$this->MOD_SETTINGS['disableRTE'],'alt_doc.php',t3lib_div::implodeArrayForUrl('',array_merge($this->R_URL_getvars,array('SET'=>'')))).$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.disableRTE',1); 00937 } 00938 00939 return ' 00940 00941 <!-- 00942 Function menus (checkboxes for selecting options): 00943 --> 00944 '.$funcMenus; 00945 }
|
|
Function used to look for configuration of buttons in the form: Fx. disabling buttons or showing them at various positions.
Definition at line 1061 of file alt_doc.php. References table(). Referenced by processData(). 01061 {
01062 global $BE_USER;
01063 $TSconfig = $BE_USER->getTSConfig('options.'.$key);
01064 $output = trim(isset($TSconfig['properties'][$table]) ? $TSconfig['properties'][$table] : $TSconfig['value']);
01065 return $output;
01066 }
|
|
Initialize the normal module operation.
Definition at line 346 of file alt_doc.php. References editRegularContentFromId(), and t3lib_BEfunc::getModuleData(). 00346 { 00347 global $BE_USER,$LANG,$BACK_PATH; 00348 00349 // Setting more GPvars: 00350 $this->popViewId = t3lib_div::_GP('popViewId'); 00351 $this->popViewId_addParams = t3lib_div::_GP('popViewId_addParams'); 00352 $this->viewUrl = t3lib_div::_GP('viewUrl'); 00353 $this->editRegularContentFromId = t3lib_div::_GP('editRegularContentFromId'); 00354 $this->recTitle = t3lib_div::_GP('recTitle'); 00355 $this->disHelp = t3lib_div::_GP('disHelp'); 00356 $this->noView = t3lib_div::_GP('noView'); 00357 00358 // Set other internal variables: 00359 $this->R_URL_getvars['returnUrl']=$this->retUrl; 00360 $this->R_URI = $this->R_URL_parts['path'].'?'.t3lib_div::implodeArrayForUrl('',$this->R_URL_getvars); 00361 00362 // MENU-ITEMS: 00363 // If array, then it's a selector box menu 00364 // If empty string it's just a variable, that'll be saved. 00365 // Values NOT in this array will not be saved in the settings-array for the module. 00366 $this->MOD_MENU = array( 00367 'showPalettes' => '', 00368 'showDescriptions' => '', 00369 'disableRTE' => '' 00370 ); 00371 00372 // Setting virtual document name 00373 $this->MCONF['name']='xMOD_alt_doc.php'; 00374 00375 // CLEANSE SETTINGS 00376 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name']); 00377 00378 // Create an instance of the document template object 00379 $this->doc = t3lib_div::makeInstance('mediumDoc'); 00380 $this->doc->bodyTagMargins['x']=5; 00381 $this->doc->bodyTagMargins['y']=5; 00382 $this->doc->backPath = $BACK_PATH; 00383 $this->doc->docType = 'xhtml_trans'; 00384 00385 $this->doc->form='<form action="'.htmlspecialchars($this->R_URI).'" method="post" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'" name="editform" onsubmit="return TBE_EDITOR_checkSubmit(1);">'; 00386 00387 $this->doc->JScode = $this->doc->wrapScriptTags(' 00388 function jumpToUrl(URL,formEl) { // 00389 if (!TBE_EDITOR_isFormChanged()) { 00390 document.location = URL; 00391 } else if (formEl && formEl.type=="checkbox") { 00392 formEl.checked = formEl.checked ? 0 : 1; 00393 } 00394 } 00395 00396 // Object: TS: 00397 function typoSetup () { // 00398 this.uniqueID = ""; 00399 } 00400 var TS = new typoSetup(); 00401 00402 // Info view: 00403 function launchView(table,uid,bP) { // 00404 var backPath= bP ? bP : ""; 00405 var thePreviewWindow=""; 00406 thePreviewWindow = window.open(backPath+"show_item.php?table="+escape(table)+"&uid="+escape(uid),"ShowItem"+TS.uniqueID,"height=300,width=410,status=0,menubar=0,resizable=0,location=0,directories=0,scrollbars=1,toolbar=0"); 00407 if (thePreviewWindow && thePreviewWindow.focus) { 00408 thePreviewWindow.focus(); 00409 } 00410 } 00411 function deleteRecord(table,id,url) { // 00412 if (confirm('.$LANG->JScharCode($LANG->getLL('deleteWarning')).')) { 00413 document.location = "tce_db.php?cmd["+table+"]["+id+"][delete]=1&redirect="+escape(url)+"&vC='.$BE_USER->veriCode().'&prErr=1&uPT=1"; 00414 } 00415 return false; 00416 } 00417 '.(isset($_POST['_savedokview_x']) && $this->popViewId ? t3lib_BEfunc::viewOnClick($this->popViewId,'',t3lib_BEfunc::BEgetRootLine($this->popViewId),'',$this->viewUrl,$this->popViewId_addParams) : '') 00418 ).$this->doc->getDynTabMenuJScode(); 00419 00420 // Setting up the context sensitive menu: 00421 $CMparts = $this->doc->getContextMenuCode(); 00422 $this->doc->JScode.= $CMparts[0]; 00423 $this->doc->bodyTagAdditions = $CMparts[1]; 00424 $this->doc->postCode.= $CMparts[2]; 00425 }
|
|
Main module operation.
Definition at line 432 of file alt_doc.php. References t3lib_BEfunc::cshItem(), and t3lib_BEfunc::getModTSconfig(). 00432 { 00433 global $BE_USER,$LANG; 00434 00435 // Starting content accumulation: 00436 $this->content=''; 00437 $this->content.=$this->doc->startPage('TYPO3 Edit Document'); 00438 00439 // Begin edit: 00440 if (is_array($this->editconf)) { 00441 00442 // Initialize TCEforms (rendering the forms) 00443 $this->tceforms = t3lib_div::makeInstance('t3lib_TCEforms'); 00444 $this->tceforms->initDefaultBEMode(); 00445 $this->tceforms->doSaveFieldName = 'doSave'; 00446 $this->tceforms->returnUrl = $this->R_URI; 00447 $this->tceforms->palettesCollapsed = !$this->MOD_SETTINGS['showPalettes']; 00448 $this->tceforms->disableRTE = $this->MOD_SETTINGS['disableRTE']; 00449 $this->tceforms->enableClickMenu = TRUE; 00450 $this->tceforms->enableTabMenu = TRUE; 00451 00452 // Clipboard is initialized: 00453 $this->tceforms->clipObj = t3lib_div::makeInstance('t3lib_clipboard'); // Start clipboard 00454 $this->tceforms->clipObj->initializeClipboard(); // Initialize - reads the clipboard content from the user session 00455 00456 // Setting external variables: 00457 if ($BE_USER->uc['edit_showFieldHelp']!='text' && $this->MOD_SETTINGS['showDescriptions']) $this->tceforms->edit_showFieldHelp='text'; 00458 00459 if ($this->editRegularContentFromId) { 00460 $this->editRegularContentFromId(); 00461 } 00462 00463 // Creating the editing form, wrap it with buttons, document selector etc. 00464 $editForm = $this->makeEditForm(); 00465 if ($editForm) { 00466 reset($this->elementsData); 00467 $this->firstEl = current($this->elementsData); 00468 00469 if ($this->viewId) { 00470 // Module configuration: 00471 $this->modTSconfig = t3lib_BEfunc::getModTSconfig($this->viewId,'mod.xMOD_alt_doc'); 00472 } else $this->modTSconfig=array(); 00473 00474 $panel = $this->makeButtonPanel(); 00475 $docSel = $this->makeDocSel(); 00476 $cMenu = $this->makeCmenu(); 00477 00478 $formContent = $this->compileForm($panel,$docSel,$cMenu,$editForm); 00479 00480 $this->content.= $this->tceforms->printNeededJSFunctions_top(). 00481 $formContent. 00482 $this->tceforms->printNeededJSFunctions(); 00483 $this->content.= $this->functionMenus(); 00484 00485 // Add CSH: 00486 $this->content.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'TCEforms', $GLOBALS['BACK_PATH'],'<br/>|',FALSE,'margin-top: 20px;'); 00487 00488 $this->content.= $this->shortCutLink(); 00489 00490 $this->tceformMessages(); 00491 } 00492 } 00493 }
|
|
Create the panel of buttons for submitting the form or otherwise perform operations.
Definition at line 717 of file alt_doc.php. References $TCA, t3lib_extMgm::isLoaded(), and table(). 00717 { 00718 global $TCA,$LANG; 00719 00720 $panel=''; 00721 00722 // Render SAVE type buttons: 00723 // The action of each button is decided by its name attribute. (See doProcessData()) 00724 if (!$this->errorC && !$TCA[$this->firstEl['table']]['ctrl']['readOnly']) { 00725 00726 // SAVE button: 00727 $panel.= '<input type="image" class="c-inputButton" name="_savedok"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedok.gif','').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDoc',1).'" />'; 00728 00729 // SAVE / VIEW button: 00730 if ($this->viewId && !$this->noView && t3lib_extMgm::isLoaded('cms')) { 00731 $panel.= '<input type="image" class="c-inputButton" name="_savedokview"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedokshow.gif','').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDocShow',1).'" />'; 00732 } 00733 00734 // SAVE / NEW button: 00735 if (count($this->elementsData)==1 && $this->getNewIconMode($this->firstEl['table'])) { 00736 $panel.= '<input type="image" class="c-inputButton" name="_savedoknew"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedoknew.gif','').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveNewDoc',1).'" />'; 00737 } 00738 00739 // SAVE / CLOSE 00740 $panel.= '<input type="image" class="c-inputButton" name="_saveandclosedok"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/saveandclosedok.gif','').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveCloseDoc',1).'" />'; 00741 } 00742 00743 // CLOSE button: 00744 $panel.= '<a href="#" onclick="document.editform.closeDoc.value=1; document.editform.submit(); return false;">'. 00745 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/closedok.gif','width="21" height="16"').' class="c-inputButton" title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.closeDoc',1).'" alt="" />'. 00746 '</a>'; 00747 00748 // DELETE + UNDO buttons: 00749 if (!$this->errorC && !$TCA[$this->firstEl['table']]['ctrl']['readOnly'] && count($this->elementsData)==1) { 00750 if ($this->firstEl['cmd']!='new' && t3lib_div::testInt($this->firstEl['uid'])) { 00751 00752 // Delete: 00753 if ($this->firstEl['deleteAccess'] && !$TCA[$this->firstEl['table']]['ctrl']['readOnly'] && !$this->getNewIconMode($this->firstEl['table'],'disableDelete')) { 00754 $aOnClick = 'return deleteRecord(\''.$this->firstEl['table'].'\',\''.$this->firstEl['uid'].'\',unescape(\''.rawurlencode($this->retUrl).'\'));'; 00755 $panel.= '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'. 00756 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/deletedok.gif','width="21" height="16"').' class="c-inputButton" title="'.$LANG->getLL('deleteItem',1).'" alt="" />'. 00757 '</a>'; 00758 } 00759 00760 // Undo: 00761 $undoButton = 0; 00762 $undoRes = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tstamp', 'sys_history', 'tablename="'.$GLOBALS['TYPO3_DB']->quoteStr($this->firstEl['table'], 'sys_history').'" AND recuid="'.intval($this->firstEl['uid']).'"', '', 'tstamp DESC', '1'); 00763 if ($undoButtonR = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($undoRes)) { 00764 $undoButton = 1; 00765 } 00766 if ($undoButton) { 00767 $aOnClick = 'document.location=\'show_rechis.php?element='.rawurlencode($this->firstEl['table'].':'.$this->firstEl['uid']).'&revert=ALL_FIELDS&sumUp=-1&returnUrl='.rawurlencode($this->R_URI).'\'; return false;'; 00768 $panel.= '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'. 00769 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/undo.gif','width="21" height="16"').' class="c-inputButton" title="'.htmlspecialchars(sprintf($LANG->getLL('undoLastChange'),t3lib_BEfunc::calcAge(time()-$undoButtonR['tstamp'],$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears')))).'" alt="" />'. 00770 '</a>'; 00771 } 00772 if ($this->getNewIconMode($this->firstEl['table'],'showHistory')) { 00773 $aOnClick = 'document.location=\'show_rechis.php?element='.rawurlencode($this->firstEl['table'].':'.$this->firstEl['uid']).'&returnUrl='.rawurlencode($this->R_URI).'\'; return false;'; 00774 $panel.= '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'. 00775 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' class="c-inputButton" alt="" />'. 00776 '</a>'; 00777 } 00778 00779 // If only SOME fields are shown in the form, this will link the user to the FULL form: 00780 if ($this->columnsOnly) { 00781 $panel.= '<a href="'.htmlspecialchars($this->R_URI.'&columnsOnly=').'">'. 00782 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' class="c-inputButton" title="'.$LANG->getLL('editWholeRecord',1).'" alt="" />'. 00783 '</a>'; 00784 } 00785 } 00786 } 00787 return $panel; 00788 }
|
|
Create the selector box form element which allows to select a clear-cache operation. Can be disabled through Page TSconfig.
Definition at line 838 of file alt_doc.php. References t3lib_BEfunc::cshItem(). 00838 { 00839 00840 // Generate the menu if NOT disabled: 00841 if (!$this->modTSconfig['properties']['disableCacheSelector']) { 00842 $cMenu = $this->doc->clearCacheMenu(intval($this->viewId),!$this->modTSconfig['properties']['disableDocSelector']); 00843 00844 // Add CSH: 00845 $cMenu.=t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'TCEforms_cacheSelector', $GLOBALS['BACK_PATH'],'', TRUE); 00846 } else $cMenu =''; 00847 return $cMenu; 00848 }
|
|
Create the selector box form element which allows to select between open documents. Can be disabled through Page TSconfig.
Definition at line 796 of file alt_doc.php. References t3lib_BEfunc::cshItem(). 00796 { 00797 global $BE_USER,$LANG; 00798 00799 // Render the selector ONLY if it has not been disabled: 00800 if (!$this->modTSconfig['properties']['disableDocSelector']) { 00801 00802 // Checking if the currently open document is stored in the list of "open documents" - if not, then add it: 00803 if ((strcmp($this->docDat[1],$this->storeUrlMd5)||!isset($this->docHandler[$this->storeUrlMd5])) && !$this->dontStoreDocumentRef) { 00804 $this->docHandler[$this->storeUrlMd5]=array($this->storeTitle,$this->storeArray,$this->storeUrl); 00805 $BE_USER->pushModuleData('alt_doc.php',array($this->docHandler,$this->storeUrlMd5)); 00806 } 00807 00808 // Now, create the document selector box: 00809 $docSel=''; 00810 if (is_array($this->docHandler)) { 00811 $opt = array(); 00812 $opt[] = '<option>[ '.$LANG->getLL('openDocs',1).': ]</option>'; 00813 00814 // Traverse the list of open documents: 00815 foreach($this->docHandler as $md5k => $setupArr) { 00816 $theValue = 'alt_doc.php?'.$setupArr[2].'&returnUrl='.rawurlencode($this->retUrl); 00817 $opt[]='<option value="'.htmlspecialchars($theValue).'"'.(!strcmp($md5k,$this->storeUrlMd5)?' selected="selected"':'').'>'.htmlspecialchars(strip_tags(t3lib_div::htmlspecialchars_decode($setupArr[0]))).'</option>'; 00818 } 00819 00820 // Compile the selector box finally: 00821 $onChange = 'if(this.options[this.selectedIndex].value && !TBE_EDITOR_isFormChanged()){document.location=(this.options[this.selectedIndex].value);}'; 00822 $docSel='<select name="_docSelector" onchange="'.htmlspecialchars($onChange).'">'.implode('',$opt).'</select>'; 00823 00824 // Add CSH: 00825 $docSel.=t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'TCEforms_docSelector', $GLOBALS['BACK_PATH'],'', TRUE); 00826 } 00827 } else $docSel=''; 00828 return $docSel; 00829 }
|
|
Creates the editing form with TCEforms, based on the input from GPvars.
Definition at line 535 of file alt_doc.php. References $LANG, $TCA, t3lib_BEfunc::fixVersioningPid(), t3lib_BEfunc::getRecord(), t3lib_BEfunc::getRecordTitle(), t3lib_BEfunc::isRecordLocked(), and table(). 00535 { 00536 global $BE_USER,$LANG,$TCA; 00537 00538 // Initialize variables: 00539 $this->elementsData=array(); 00540 $this->errorC=0; 00541 $this->newC=0; 00542 $thePrevUid=''; 00543 $editForm=''; 00544 00545 // Traverse the GPvar edit array 00546 foreach($this->editconf as $table => $conf) { // Tables: 00547 if (is_array($conf) && $TCA[$table] && $BE_USER->check('tables_modify',$table)) { 00548 00549 // Traverse the keys/comments of each table (keys can be a commalist of uids) 00550 foreach($conf as $cKey => $cmd) { 00551 if ($cmd=='edit' || $cmd=='new') { 00552 00553 // Get the ids: 00554 $ids = t3lib_div::trimExplode(',',$cKey,1); 00555 00556 // Traverse the ids: 00557 foreach($ids as $theUid) { 00558 00559 // Checking if the user has permissions? (Only working as a precaution, because the final permission check is always down in TCE. But it's good to notify the user on beforehand...) 00560 // First, resetting flags. 00561 $hasAccess = 1; 00562 $deniedAccessReason = ''; 00563 $deleteAccess = 0; 00564 $this->viewId = 0; 00565 00566 // If the command is to create a NEW record...: 00567 if ($cmd=='new') { 00568 if (intval($theUid)) { // NOTICE: the id values in this case points to the page uid onto which the record should be create OR (if the id is negativ) to a record from the same table AFTER which to create the record. 00569 00570 // Find parent page on which the new record reside 00571 if ($theUid<0) { // Less than zero - find parent page 00572 $calcPRec=t3lib_BEfunc::getRecord($table,abs($theUid)); 00573 $calcPRec=t3lib_BEfunc::getRecord('pages',$calcPRec['pid']); 00574 } else { // always a page 00575 $calcPRec=t3lib_BEfunc::getRecord('pages',abs($theUid)); 00576 } 00577 00578 // Now, calculate whether the user has access to creating new records on this position: 00579 if (is_array($calcPRec)) { 00580 $CALC_PERMS = $BE_USER->calcPerms($calcPRec); // Permissions for the parent page 00581 if ($table=='pages') { // If pages: 00582 $hasAccess = $CALC_PERMS&8 ? 1 : 0; 00583 $this->viewId = $calcPRec['pid']; 00584 } else { 00585 $hasAccess = $CALC_PERMS&16 ? 1 : 0; 00586 $this->viewId = $calcPRec['uid']; 00587 } 00588 } 00589 } 00590 $this->dontStoreDocumentRef=1; // Don't save this document title in the document selector if the document is new. 00591 } else { // Edit: 00592 $calcPRec = t3lib_BEfunc::getRecord($table,$theUid); 00593 t3lib_BEfunc::fixVersioningPid($table,$calcPRec); 00594 if (is_array($calcPRec)) { 00595 if ($table=='pages') { // If pages: 00596 $CALC_PERMS = $BE_USER->calcPerms($calcPRec); 00597 $hasAccess = $CALC_PERMS&2 ? 1 : 0; 00598 $deleteAccess = $CALC_PERMS&4 ? 1 : 0; 00599 $this->viewId = $calcPRec['uid']; 00600 } else { 00601 $CALC_PERMS = $BE_USER->calcPerms(t3lib_BEfunc::getRecord('pages',$calcPRec['pid'])); // Fetching pid-record first. 00602 $hasAccess = $CALC_PERMS&16 ? 1 : 0; 00603 $deleteAccess = $CALC_PERMS&16 ? 1 : 0; 00604 $this->viewId = $calcPRec['pid']; 00605 00606 // Adding "&L=xx" if the record being edited has a languageField with a value larger than zero! 00607 if ($TCA[$table]['ctrl']['languageField'] && $calcPRec[$TCA[$table]['ctrl']['languageField']]>0) { 00608 $this->viewId_addParams = '&L='.$calcPRec[$TCA[$table]['ctrl']['languageField']]; 00609 } 00610 } 00611 00612 // Check internals regarding access: 00613 if ($hasAccess) { 00614 $hasAccess = $BE_USER->recordEditAccessInternals($table, $calcPRec); 00615 $deniedAccessReason = $BE_USER->errorMsg; 00616 } 00617 } else $hasAccess = 0; 00618 } 00619 00620 // AT THIS POINT we have checked the access status of the editing/creation of records and we can now proceed with creating the form elements: 00621 00622 if ($hasAccess) { 00623 $prevPageID = is_object($trData)?$trData->prevPageID:''; 00624 $trData = t3lib_div::makeInstance('t3lib_transferData'); 00625 $trData->addRawData = TRUE; 00626 $trData->defVals = $this->defVals; 00627 $trData->lockRecords=1; 00628 $trData->disableRTE = $this->MOD_SETTINGS['disableRTE']; 00629 $trData->prevPageID = $prevPageID; 00630 $trData->fetchRecord($table,$theUid,$cmd=='new'?'new':''); // 'new' 00631 reset($trData->regTableItems_data); 00632 $rec = current($trData->regTableItems_data); 00633 $rec['uid'] = $cmd=='new'?uniqid('NEW'):$theUid; 00634 $this->elementsData[]=array( 00635 'table' => $table, 00636 'uid' => $rec['uid'], 00637 'cmd' => $cmd, 00638 'deleteAccess' => $deleteAccess 00639 ); 00640 if ($cmd=='new') { 00641 $rec['pid'] = $theUid=='prev'?$thePrevUid:$theUid; 00642 } 00643 00644 // Now, render the form: 00645 if (is_array($rec)) { 00646 00647 // Setting visual path / title of form: 00648 $this->generalPathOfForm = $this->tceforms->getRecordPath($table,$rec); 00649 if (!$this->storeTitle) { 00650 $this->storeTitle = $this->recTitle ? htmlspecialchars($this->recTitle) : t3lib_BEfunc::getRecordTitle($table,$rec,1); 00651 } 00652 00653 // Setting variables in TCEforms object: 00654 $this->tceforms->hiddenFieldList = ''; 00655 $this->tceforms->globalShowHelp = $this->disHelp ? 0 : 1; 00656 if (is_array($this->overrideVals[$table])) { 00657 $this->tceforms->hiddenFieldListArr = array_keys($this->overrideVals[$table]); 00658 } 00659 00660 // Register default language labels, if any: 00661 $this->tceforms->registerDefaultLanguageData($table,$rec); 00662 00663 // Create form for the record (either specific list of fields or the whole record): 00664 $panel = ''; 00665 if ($this->columnsOnly) { 00666 $panel.= $this->tceforms->getListedFields($table,$rec,$this->columnsOnly); 00667 } else { 00668 $panel.= $this->tceforms->getMainFields($table,$rec); 00669 } 00670 $panel = $this->tceforms->wrapTotal($panel,$rec,$table); 00671 00672 // Setting the pid value for new records: 00673 if ($cmd=='new') { 00674 $panel.= '<input type="hidden" name="data['.$table.']['.$rec['uid'].'][pid]" value="'.$rec['pid'].'" />'; 00675 $this->newC++; 00676 } 00677 00678 // Display "is-locked" message: 00679 if ($lockInfo = t3lib_BEfunc::isRecordLocked($table,$rec['uid'])) { 00680 $lockIcon = ' 00681 00682 <!-- 00683 Warning box: 00684 --> 00685 <table border="0" cellpadding="0" cellspacing="0" class="warningbox"> 00686 <tr> 00687 <td><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/recordlock_warning3.gif','width="17" height="12"').' alt="" /></td> 00688 <td>'.htmlspecialchars($lockInfo['msg']).'</td> 00689 </tr> 00690 </table> 00691 '; 00692 } else $lockIcon = ''; 00693 00694 // Combine it all: 00695 $editForm.= $lockIcon.$panel; 00696 } 00697 00698 $thePrevUid = $rec['uid']; 00699 } else { 00700 $this->errorC++; 00701 $editForm.=$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.noEditPermission',1).'<br /><br />'. 00702 ($deniedAccessReason ? 'Reason: '.htmlspecialchars($deniedAccessReason).'<br/><br/>' : ''); 00703 } 00704 } 00705 } 00706 } 00707 } 00708 } 00709 return $editForm; 00710 }
|
|
First initialization.
Definition at line 167 of file alt_doc.php. References closeDocument(), compileStoreDat(), and setDocument(). 00167 { 00168 global $BE_USER; 00169 00170 // Setting GPvars: 00171 $this->editconf = t3lib_div::_GP('edit'); 00172 $this->defVals = t3lib_div::_GP('defVals'); 00173 $this->overrideVals = t3lib_div::_GP('overrideVals'); 00174 $this->columnsOnly = t3lib_div::_GP('columnsOnly'); 00175 $this->returnUrl = t3lib_div::_GP('returnUrl'); 00176 $this->closeDoc = t3lib_div::_GP('closeDoc'); 00177 $this->doSave = t3lib_div::_GP('doSave'); 00178 $this->returnEditConf = t3lib_div::_GP('returnEditConf'); 00179 00180 // Setting override values as default if defVals does not exist. 00181 if (!is_array($this->defVals) && is_array($this->overrideVals)) { 00182 $this->defVals = $this->overrideVals; 00183 } 00184 00185 // Setting return URL 00186 $this->retUrl = $this->returnUrl ? $this->returnUrl : 'dummy.php'; 00187 00188 // Make R_URL (request url) based on input GETvars: 00189 $this->R_URL_parts = parse_url(t3lib_div::getIndpEnv('REQUEST_URI')); 00190 $this->R_URL_getvars = t3lib_div::_GET(); 00191 00192 // MAKE url for storing 00193 $this->compileStoreDat(); 00194 00195 // Initialize more variables. 00196 $this->dontStoreDocumentRef=0; 00197 $this->storeTitle=''; 00198 00199 // Get session data for the module: 00200 $this->docDat = $BE_USER->getModuleData('alt_doc.php','ses'); 00201 $this->docHandler = $this->docDat[0]; 00202 00203 // If a request for closing the document has been sent, act accordingly: 00204 if ($this->closeDoc>0) { 00205 $this->closeDocument($this->closeDoc); 00206 } 00207 00208 // If NO vars are sent to the script, try to read first document: 00209 if (is_array($this->R_URL_getvars) && count($this->R_URL_getvars)<2 && !is_array($this->editconf)) { // Added !is_array($this->editconf) because editConf must not be set either. Anyways I can't figure out when this situation here will apply... 00210 $this->setDocument($this->docDat[1]); 00211 } 00212 }
|
|
Outputting the accumulated content to screen.
Definition at line 500 of file alt_doc.php. 00500 { 00501 00502 echo $this->content.$this->doc->endPage(); 00503 }
|
|
Do processing of data, submitting it to TCEmain.
Definition at line 229 of file alt_doc.php. References $TYPO3_CONF_VARS, closeDocument(), compileStoreDat(), debug(), getNewIconMode(), t3lib_BEfunc::getRecord(), and t3lib_BEfunc::getSetUpdateSignal(). 00229 { 00230 global $BE_USER,$TYPO3_CONF_VARS; 00231 00232 // GPvars specifically for processing: 00233 $this->data = t3lib_div::_GP('data'); 00234 $this->mirror = t3lib_div::_GP('mirror'); 00235 $this->cacheCmd = t3lib_div::_GP('cacheCmd'); 00236 $this->redirect = t3lib_div::_GP('redirect'); 00237 $this->disableRTE = t3lib_div::_GP('_disableRTE'); 00238 $this->returnNewPageId = t3lib_div::_GP('returnNewPageId'); 00239 $this->vC = t3lib_div::_GP('vC'); 00240 00241 // See tce_db.php for relevate options here: 00242 // Only options related to $this->data submission are included here. 00243 $tce = t3lib_div::makeInstance('t3lib_TCEmain'); 00244 $tce->stripslashes_values=0; 00245 00246 // Setting default values specific for the user: 00247 $TCAdefaultOverride = $BE_USER->getTSConfigProp('TCAdefaults'); 00248 if (is_array($TCAdefaultOverride)) { 00249 $tce->setDefaultsFromUserTS($TCAdefaultOverride); 00250 } 00251 00252 // Setting internal vars: 00253 if ($BE_USER->uc['neverHideAtCopy']) { $tce->neverHideAtCopy = 1; } 00254 $tce->debug=0; 00255 $tce->disableRTE = $this->disableRTE; 00256 00257 // Loading TCEmain with data: 00258 $tce->start($this->data,array()); 00259 if (is_array($this->mirror)) { $tce->setMirror($this->mirror); } 00260 00261 // If pages are being edited, we set an instruction about updating the page tree after this operation. 00262 if (isset($this->data['pages'])) { 00263 t3lib_BEfunc::getSetUpdateSignal('updatePageTree'); 00264 } 00265 00266 00267 // Checking referer / executing 00268 $refInfo=parse_url(t3lib_div::getIndpEnv('HTTP_REFERER')); 00269 $httpHost = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY'); 00270 if ($httpHost!=$refInfo['host'] && $this->vC!=$BE_USER->veriCode() && !$TYPO3_CONF_VARS['SYS']['doNotCheckReferer']) { 00271 $tce->log('',0,0,0,1,"Referer host '%s' and server host '%s' did not match and veriCode was not valid either!",1,array($refInfo['host'],$httpHost)); 00272 debug('Error: Referer host did not match with server host.'); 00273 } else { 00274 00275 // Perform the saving operation with TCEmain: 00276 $tce->process_uploads($_FILES); 00277 $tce->process_datamap(); 00278 00279 // If there was saved any new items, load them: 00280 if (count($tce->substNEWwithIDs_table)) { 00281 00282 // Resetting editconf: 00283 $this->editconf = array(); 00284 00285 // Traverse all new records and forge the content of ->editconf so we can continue to EDIT these records! 00286 foreach($tce->substNEWwithIDs_table as $nKey => $nTable) { 00287 $this->editconf[$nTable][$tce->substNEWwithIDs[$nKey]]='edit'; 00288 if ($nTable=='pages' && $this->retUrl!='dummy.php' && $this->returnNewPageId) { 00289 $this->retUrl.='&id='.$tce->substNEWwithIDs[$nKey]; 00290 } 00291 } 00292 00293 // Finally, set the editconf array in the "getvars" so they will be passed along in URLs as needed. 00294 $this->R_URL_getvars['edit']=$this->editconf; 00295 00296 // Unsetting default values since we don't need them anymore. 00297 unset($this->R_URL_getvars['defVals']); 00298 00299 // Re-compile the store* values since editconf changed... 00300 $this->compileStoreDat(); 00301 } 00302 00303 // If a document is saved and a new one is created right after. 00304 if (isset($_POST['_savedoknew_x']) && is_array($this->editconf)) { 00305 00306 // Finding the current table: 00307 reset($this->editconf); 00308 $nTable=key($this->editconf); 00309 00310 // Finding the first id, getting the records pid+uid 00311 reset($this->editconf[$nTable]); 00312 $nUid=key($this->editconf[$nTable]); 00313 $nRec = t3lib_BEfunc::getRecord($nTable,$nUid,'pid,uid'); 00314 00315 // Setting a blank editconf array for a new record: 00316 $this->editconf=array(); 00317 if ($this->getNewIconMode($nTable)=='top') { 00318 $this->editconf[$nTable][$nRec['pid']]='new'; 00319 } else { 00320 $this->editconf[$nTable][-$nRec['uid']]='new'; 00321 } 00322 00323 // Finally, set the editconf array in the "getvars" so they will be passed along in URLs as needed. 00324 $this->R_URL_getvars['edit']=$this->editconf; 00325 00326 // Re-compile the store* values since editconf changed... 00327 $this->compileStoreDat(); 00328 } 00329 00330 $tce->printLogErrorMessages( 00331 isset($_POST['_saveandclosedok_x']) ? 00332 $this->retUrl : 00333 $this->R_URL_parts['path'].'?'.t3lib_div::implodeArrayForUrl('',$this->R_URL_getvars) // popView will not be invoked here, because the information from the submit button for save/view will be lost .... But does it matter if there is an error anyways? 00334 ); 00335 } 00336 if (isset($_POST['_saveandclosedok_x']) || $this->closeDoc<0) { // || count($tce->substNEWwithIDs)... If any new items has been save, the document is CLOSED because if not, we just get that element re-listed as new. And we don't want that! 00337 $this->closeDocument(abs($this->closeDoc)); 00338 } 00339 }
|
|
Redirects to the document pointed to by $currentDocFromHandlerMD5 OR $retUrl (depending on some internal calculations). Most likely you will get a header-location redirect from this function.
Definition at line 1106 of file alt_doc.php. References t3lib_extMgm::isLoaded(). Referenced by preInit(). 01106 { 01107 if (!t3lib_extMgm::isLoaded('cms') && !strcmp($retUrl,'alt_doc_nodoc.php')) return; 01108 01109 if (!$this->modTSconfig['properties']['disableDocSelector'] && is_array($this->docHandler) && count($this->docHandler)) { 01110 if (isset($this->docHandler[$currentDocFromHandlerMD5])) { 01111 $setupArr=$this->docHandler[$currentDocFromHandlerMD5]; 01112 } else { 01113 reset($this->docHandler); 01114 $setupArr=current($this->docHandler); 01115 } 01116 if ($setupArr[2]) { 01117 $sParts = parse_url(t3lib_div::getIndpEnv('REQUEST_URI')); 01118 $retUrl = $sParts['path'].'?'.$setupArr[2].'&returnUrl='.rawurlencode($retUrl); 01119 } 01120 } 01121 Header('Location: '.t3lib_div::locationHeaderUrl($retUrl)); 01122 exit; 01123 }
|
|
Create shortcut and open-in-window link in the bottom of the page.
Definition at line 952 of file alt_doc.php. References $content. 00952 { 00953 global $BE_USER,$LANG; 00954 00955 // ShortCut 00956 if ($this->returnUrl!='close.html') { 00957 $content.='<br /><br />'; 00958 00959 // Shortcut: 00960 if ($BE_USER->mayMakeShortcut()) { 00961 $content.=$this->doc->makeShortcutIcon('returnUrl,edit,defVals,overrideVals,columnsOnly,returnNewPageId,editRegularContentFromId,disHelp,noView',implode(',',array_keys($this->MOD_MENU)),$this->MCONF['name'],1); 00962 } 00963 00964 // Open in new window: 00965 $aOnClick = 'vHWin=window.open(\''.t3lib_div::linkThisScript(array('returnUrl'=>'close.html')).'\',\''.md5($this->R_URI).'\',\''.($BE_USER->uc['edit_wideDocument']?'width=670,height=500':'width=600,height=400').',status=0,menubar=0,scrollbars=1,resizable=1\');vHWin.focus();return false;'; 00966 $content.='<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'. 00967 '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/open_in_new_window.gif','width="19" height="14"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.openInNewWindow',1).'" alt="" />'. 00968 '</a>'; 00969 } 00970 return ' 00971 00972 <!-- 00973 Shortcut link: 00974 --> 00975 '.$content; 00976 }
|
|
Reads comment messages from TCEforms and prints them in a HTML comment in the buttom of the page.
Definition at line 983 of file alt_doc.php. 00983 {
00984 if (count($this->tceforms->commentMessages)) {
00985 $this->content.='
00986
00987 <!-- TCEFORM messages
00988 '.htmlspecialchars(implode(chr(10),$this->tceforms->commentMessages)).'
00989 -->
00990
00991 ';
00992 }
00993 }
|
|
Definition at line 107 of file alt_doc.php. |
|
Definition at line 102 of file alt_doc.php. |
|
Definition at line 98 of file alt_doc.php. |
|
Definition at line 125 of file alt_doc.php. |
|
Definition at line 105 of file alt_doc.php. |
|
Definition at line 99 of file alt_doc.php. |
|
Definition at line 109 of file alt_doc.php. |
|
Definition at line 118 of file alt_doc.php. |
|
Definition at line 124 of file alt_doc.php. |
|
Definition at line 137 of file alt_doc.php. |
|
Definition at line 138 of file alt_doc.php. |
|
Definition at line 154 of file alt_doc.php. |
|
Definition at line 103 of file alt_doc.php. |
|
Definition at line 97 of file alt_doc.php. |
|
Definition at line 116 of file alt_doc.php. |
|
Definition at line 142 of file alt_doc.php. |
|
Definition at line 144 of file alt_doc.php. |
|
Definition at line 143 of file alt_doc.php. |
|
Definition at line 150 of file alt_doc.php. |
|
Definition at line 106 of file alt_doc.php. |
|
Definition at line 148 of file alt_doc.php. |
|
Definition at line 145 of file alt_doc.php. |
|
Definition at line 119 of file alt_doc.php. |
|
Definition at line 100 of file alt_doc.php. |
|
Definition at line 113 of file alt_doc.php. |
|
Definition at line 114 of file alt_doc.php. |
|
Definition at line 130 of file alt_doc.php. |
|
Definition at line 129 of file alt_doc.php. |
|
Definition at line 128 of file alt_doc.php. |
|
Definition at line 117 of file alt_doc.php. |
|
Definition at line 108 of file alt_doc.php. |
|
Definition at line 127 of file alt_doc.php. |
|
Definition at line 120 of file alt_doc.php. |
|
Definition at line 110 of file alt_doc.php. |
|
Definition at line 101 of file alt_doc.php. |
|
Definition at line 133 of file alt_doc.php. |
|
Definition at line 132 of file alt_doc.php. |
|
Definition at line 134 of file alt_doc.php. |
|
Definition at line 135 of file alt_doc.php. |
|
Definition at line 149 of file alt_doc.php. |
|
Definition at line 111 of file alt_doc.php. |
|
Definition at line 146 of file alt_doc.php. |
|
Definition at line 147 of file alt_doc.php. |
|
Definition at line 115 of file alt_doc.php. |