Commit 20b4a3ca authored by Carsten  Rose's avatar Carsten Rose
Browse files

F6289: First runnable version to show the formLog. Log is still empty (nothing...

F6289: First runnable version to show the formLog. Log is still empty (nothing submitted). 'per session' / 'all' not implemented.
parent c2c77be7
......@@ -1492,6 +1492,8 @@ Store: *TYPO3* (Bodytext) - T
+-------------------------+-------------------------------------------------------------------+----------+
| feUserGroup | FE groups of logged in Typo3 FE User | |
+-------------------------+-------------------------------------------------------------------+----------+
| beUser | Logged in Typo3 BE User | |
+-------------------------+-------------------------------------------------------------------+----------+
| beUserLoggedIn | 'yes' | 'no' - Status if a BE-User is logged in | |
+-------------------------+-------------------------------------------------------------------+----------+
......@@ -6936,6 +6938,14 @@ Tips:
QFQ specific
------------
Page is white: no HTML code at all
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This should not happen.
The PHP process stopped at all. Check the Apache error logfile, look for a stacktrace to find the latest function. Send
a bug report.
Problem with Query or variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
......
......@@ -48,6 +48,9 @@ fillStoreSystemBySqlErrorMsg3 =
# cat=debug/logDir; type=string; label=QFQ log directory:Default is '/var/www/protected/log'. PathFile is absolute or relative to '<site path>'.
logDir = fileadmin/protected/log/qfq.log
# cat=debug/qfq; type=string; label=QFQ log file:Default is 'fileadmin/protected/log/qfq.log'. A logfile of fired SQL statements. PathFile is absolute or relative to '<site path>'.
qfqLog = fileadmin/protected/log/qfq.log
......
......@@ -62,6 +62,10 @@ abstract class AbstractBuildForm {
* @var Sip
*/
private $sip = null;
/**
* @var Link
*/
protected $link = null;
/**
* @var Report
*/
......@@ -105,6 +109,8 @@ abstract class AbstractBuildForm {
$this->sip = $this->store->getSipInstance();
$this->link = new Link($this->sip, $this->dbIndexData);
// render mode specific
$this->fillWrap();
......@@ -2530,6 +2536,7 @@ abstract class AbstractBuildForm {
* @return string
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
private function createFormLink(array $formElement, $targetRecordId, array $record, $symbol, $toolTip, $currentRow = array()) {
......@@ -2714,7 +2721,6 @@ abstract class AbstractBuildForm {
* @throws UserReportException
*/
private function renderCell(array $control, $columnName, $columnValue, $cssClassColumnId) {
$link = null;
switch ($columnName) {
case SUBRECORD_COLUMN_ROW_CLASS:
......@@ -2753,10 +2759,7 @@ abstract class AbstractBuildForm {
}
if (isset($control[SUBRECORD_COLUMN_LINK][$columnName])) {
if (!isset($link)) {
$link = new Link($this->sip, $this->dbIndexData);
}
$cell = $link->renderLink($columnValue);
$cell = $this->link->renderLink($columnValue);
}
if (strcasecmp($columnName, 'id') == 0) {
......@@ -2779,6 +2782,7 @@ abstract class AbstractBuildForm {
* @return string String: "API_DIR/delete.php?sip=...."
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public function createDeleteUrl($formName, $recordId, $mode = RETURN_URL) {
......
......@@ -10,10 +10,11 @@ namespace qfq;
use qfq;
require_once(__DIR__ . '/../qfq/Constants.php');
require_once(__DIR__ . '/../qfq/helper/OnArray.php');
require_once(__DIR__ . '/../qfq/AbstractBuildForm.php');
require_once(__DIR__ . '/../qfq/exceptions/UserFormException.php');
require_once(__DIR__ . '/Constants.php');
require_once(__DIR__ . '/helper/OnArray.php');
require_once(__DIR__ . '/AbstractBuildForm.php');
require_once(__DIR__ . '/exceptions/UserFormException.php');
require_once(__DIR__ . '/report/Link.php');
/**
* Class BuildFormBootstrap
......@@ -30,6 +31,7 @@ class BuildFormBootstrap extends AbstractBuildForm {
* @param array $db Array of 'Database' instances
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public function __construct(array $formSpec, array $feSpecAction, array $feSpecNative, array $db) {
parent::__construct($formSpec, $feSpecAction, $feSpecNative, $db);
......@@ -126,7 +128,7 @@ class BuildFormBootstrap extends AbstractBuildForm {
// Show title / frame only if there is a title given.
if ($this->formSpec[F_TITLE] != '') {
$classTitle = isset($this->formSpec[F_CLASS_TITLE]) ? $this->formSpec[F_CLASS_TITLE] : "qfq-form-title";
$title = Support::wrapTag('<div class="row"><div class="col-md-12">', Support::wrapTag('<div class="' . $classTitle .'">', $this->formSpec[F_TITLE]));
$title = Support::wrapTag('<div class="row"><div class="col-md-12">', Support::wrapTag('<div class="' . $classTitle . '">', $this->formSpec[F_TITLE]));
}
$html .= $button . $title;
......@@ -193,6 +195,20 @@ class BuildFormBootstrap extends AbstractBuildForm {
return $this->buildButtonAnchor($url, 'form-view-' . $this->formSpec[F_ID], '', $toolTip, GLYPH_ICON_DUPLICATE, $status, 'btn btn-default navbar-btn');
}
/**
* Builds a button to open the formLog. The formLog appears on the same page as the form, but the form is not rendered and the log is shown.
*
* @return string
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
private function buildLogForm() {
$pageAlias=$this->store::getVar(TYPO3_PAGE_ALIAS, STORE_TYPO3);
return $this->link->renderLink("p:" . $pageAlias . "&form=" . $this->formSpec[F_NAME] . "&" . FORM_LOG_MODE . "=" . FORM_LOG_SESSION .
'|b|G:glyphicon-bell|s|o:Set form in debugmode and show log|c:btn btn-default navbar-btn');
}
/**
* Creates a link to open current form loaded in FormEditor
*
......@@ -249,13 +265,14 @@ class BuildFormBootstrap extends AbstractBuildForm {
* @throws CodeException
* @throws DbException
* @throws UserFormException
* @throws UserReportException
*/
private function buildButtons() {
$buttonNew = '';
$buttonDelete = '';
$buttonClose = '';
$buttonSave = '';
$buttonEditForm = '';
$buttonDebugForm = '';
$recordId = $this->store->getVar(SIP_RECORD_ID, STORE_SIP);
// Button: FormEdit
......@@ -263,7 +280,8 @@ class BuildFormBootstrap extends AbstractBuildForm {
$toolTip = "Edit form" . PHP_EOL . PHP_EOL . OnArray::toString($this->store->getStore(STORE_SIP), ' = ', PHP_EOL, "'");
$url = $this->createFormEditorUrl(FORM_NAME_FORM, $this->formSpec[F_ID]);
$buttonEditForm = $this->buildViewForm() .
$buttonDebugForm = $this->buildLogForm() .
$this->buildViewForm() .
$this->buildShowEditFormElementCheckbox() .
$this->buildButtonCopyForm() .
$this->buildButtonAnchor($url, 'form-edit-button', '', $toolTip, GLYPH_ICON_TOOL, '', 'btn btn-default navbar-btn');
......@@ -310,17 +328,12 @@ class BuildFormBootstrap extends AbstractBuildForm {
}
// Arrangement: Edit Form / Save / Close / Delete / New
// Specified in reverse order cause 'pull-right' inverts the order. http://getbootstrap.com/css/#helper-classes-floats
$html = '';
// $html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonNew);
// $html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonDelete);
// $html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonSave . $buttonClose);
// $html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonEditForm);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonEditForm);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonSave . $buttonClose);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonDelete);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonNew);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonDebugForm, true);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonSave . $buttonClose, true);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonDelete, true);
$html .= Support::wrapTag('<div class="btn-group" role="group">', $buttonNew, true);
$html = Support::wrapTag('<div class="btn-toolbar pull-right" role="toolbar">', $html);
......
......@@ -14,8 +14,6 @@ const CONFIG_T3 = 'LocalConfiguration.php'; // T3 config file
const GFX_INFO = 'typo3conf/ext/qfq/Resources/Public/icons/note.gif';
const API_DIR = 'typo3conf/ext/qfq/qfq/api';
const QFQ_LOG_DIR = 'fileadmin/protected/log';
const QFQ_LOG = 'qfq.log';
const QFQ_TEMP_FILE_PATTERN = 'qfq.split.XXXXX';
const QFQ_TEMP_SOURCE = '.temp.source';
......@@ -369,6 +367,7 @@ const CLIENT_COOKIE_QFQ = 'cookieQfq';
const TYPO3_FORM = CLIENT_FORM;
const TYPO3_RECORD_ID = CLIENT_RECORD_ID;
const TYPO3_BE_USER_LOGGED_IN = 'beUserLoggedIn'; // 'yes' | 'no'
const TYPO3_BE_USER = 'beUser'; // 'yes' | 'no'
const TYPO3_FE_USER = 'feUser';
const TYPO3_FE_USER_UID = 'feUserUid';
const TYPO3_FE_USER_GROUP = 'feUserGroup';
......@@ -407,6 +406,9 @@ const SYSTEM_DB_INDEX_QFQ = "indexQfq";
const SYSTEM_DB_NAME_DATA = '_dbNameData';
const SYSTEM_DB_NAME_QFQ = '_dbNameQfq';
const SYSTEM_LOG_DIR = 'logDir'; // Logging to file
const SYSTEM_LOG_DIR_DEFAULT = 'fileadmin/protected/log'; // Logging to file
const SYSTEM_QFQ_LOG = 'qfqLog'; // Logging to file
const SYSTEM_QFQ_LOG_FILE = 'fileadmin/protected/log/qfq.log';
......@@ -1296,6 +1298,7 @@ const COLUMN_WRAP_TOKEN = '+';
const FORM_NAME_FORM = 'form';
const FORM_NAME_FORM_ELEMENT = 'formElement';
const FORM_LOG_MODE = '_formLogMode';
const FORM_LOG_SESSION = 'logSession';
const FORM_LOG_ALL = 'logAll';
......@@ -1365,6 +1368,8 @@ const TOKEN_DOWNLOAD_MODE = 'M';
const TOKEN_THUMBNAIL = 'T';
const TOKEN_THUMBNAIL_DIMENSION = 'W';
const TOKEN_MONITOR = 'O';
const TOKEN_ACTION_DELETE = 'x';
const TOKEN_ACTION_DELETE_AJAX = 'a';
const TOKEN_ACTION_DELETE_REPORT = 'r';
......@@ -1374,6 +1379,7 @@ const TOKEN_CLASS_NONE = 'n';
//const TOKEN_CLASS_INTERNAL = 'i';
//const TOKEN_CLASS_EXTERNAL = 'e';
// Following tokens are defined in 'long' form: TOKEN_L_...
const TOKEN_L_FILE = 'file';
const TOKEN_L_TAIL = 'tail';
const TOKEN_L_APPEND = 'append';
......
......@@ -40,12 +40,12 @@ require_once(__DIR__ . '/BuildFormPlain.php');
require_once(__DIR__ . '/BuildFormTable.php');
require_once(__DIR__ . '/BuildFormBootstrap.php');
require_once(__DIR__ . '/report/Report.php');
require_once(__DIR__ . '/report/Monitor.php');
require_once(__DIR__ . '/BodytextParser.php');
require_once(__DIR__ . '/Delete.php');
require_once(__DIR__ . '/form/FormAction.php');
require_once(__DIR__ . '/form/Dirty.php');
require_once(__DIR__ . '/form/DragAndDrop.php');
/*
* Form will be called
* a) with a SIP identifier, or
......@@ -275,9 +275,26 @@ class QuickFormQuery {
}
}
private function buildFormLog($formName){
/**
* Creates an empty file. This indicates that the current form is in debug mode.
*
* @param $formName
* @param $formLogMode
* @return
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
private function getFormLog($formName, $formLogMode) {
$formLogFileName = Support::getFormLogFileName($formName, $formLogMode);
file_put_contents($formLogFileName, 'hello world');
$monitor = new Monitor();
return "<pre id='monitor-1'>Please wait</pre>" . $monitor->process([TOKEN_L_FILE => $formLogFileName, TOKEN_L_APPEND => '1']);
}
/**
* Process form.
* $mode=
......@@ -308,9 +325,9 @@ class QuickFormQuery {
$recordId = $this->store->getVar(SIP_RECORD_ID, STORE_SIP . STORE_TYPO3 . STORE_CLIENT . STORE_ZERO);
$this->setParameterLanguageFieldName();
$formName = $this->loadFormSpecification($formMode, $recordId, $foundInStore, $modeLog);
if(false!==$modeLog){
return $this->buildFormLog($formName);
$formName = $this->loadFormSpecification($formMode, $recordId, $foundInStore, $formLogMode);
if ($formName !== false && $formLogMode !== false) {
return $this->getFormLog($formName, $formLogMode);
}
if ($formName === false) {
......@@ -506,7 +523,7 @@ class QuickFormQuery {
$formAction->elements($recordId, $this->feSpecAction, FE_TYPE_BEFORE_LOAD);
$dragAndDrop = new DragAndDrop($this->formSpec);
$dragAndDrop->process($this->formSpec);
$dragAndDrop->process();
$formAction->elements($recordId, $this->feSpecAction, FE_TYPE_AFTER_LOAD);
break;
......@@ -673,21 +690,8 @@ class QuickFormQuery {
}
/**
* @param $formName
* @return bool
*/
private function checkForModeLog($formName, &$modeLog) {
$modeLog=false;
$arr = explode('|', $formName);
if (!empty($arr[1]) && ($arr[1] == FORM_LOG_ALL || $arr[1] == FORM_LOG_SESSION)) {
$modeLog = $arr[1];
}
return $arr[0];
}
/**
* Get form name
* Check if the form is in log mode: set formLog and return
* Load form. Evaluates form. Load FormElements.
*
* After processing:
......@@ -698,26 +702,29 @@ class QuickFormQuery {
* @param string $mode FORM_LOAD|FORM_SAVE|FORM_UPDATE
* @param int $recordId
* @param string $foundInStore
*
* @param string $formLogMode
* @return bool|string if found the formName, else 'false'.
*
* @throws CodeException
* @throws DbException
* @throws UserFormException
* @throws UserReportException
*/
private function loadFormSpecification($mode, $recordId, &$foundInStore = '', &$modeLog='') {
private function loadFormSpecification($mode, $recordId, &$foundInStore = '', &$formLogMode = '') {
$formLogMode = false; // Important: if no form is found, formLogMode needs also to be false.
// formName
if (false === ($formName = $this->getFormName($mode, $foundInStore))) {
return false;
}
$formName = $this->checkForModeLog($formName, $modeLog);
if ($modeLog!==false ) {
return $formName;
// Check for '_formLogMode'=logSession|logAll
$formLogMode = $this->store::getVar(FORM_LOG_MODE, STORE_SIP);
if ($formLogMode !== false) {
return $formName; // fomLog: getting the formName is sufficient.
}
if (!$this->dbArray[$this->dbIndexQfq]->existTable(TABLE_NAME_FORM)) {
throw new UserFormException("Table '" . TABLE_NAME_FORM . "' not found", ERROR_MISSING_TABLE);
}
......@@ -1272,6 +1279,7 @@ class QuickFormQuery {
* @return string
* @throws CodeException
* @throws DbException
* @throws DownloadException
* @throws UserFormException
* @throws UserReportException
*/
......
......@@ -65,6 +65,7 @@ class DragAndDrop {
}
/**
* Reorder the elements according formSpec[F_DRAG_AND_DROP_ORDER_SQL]
*
* @return array|int
* @throws CodeException
......
......@@ -10,6 +10,7 @@ namespace qfq;
require_once(__DIR__ . '/../Constants.php');
require_once(__DIR__ . '/Sanitize.php');
require_once(__DIR__ . '/../store/Store.php');
const LONG_CURLY_OPEN = '#/+open+/#';
const LONG_CURLY_CLOSE = '#/+close+/#';
......@@ -20,33 +21,71 @@ const LONG_CURLY_CLOSE = '#/+close+/#';
*/
class Support {
/**
* @var Store
*/
private static $store = null;
/**
* @param array $queryArray Empty or prefilled assoc array with url parameter
* @param string $mode PARAM_T3_NO_ID, PARAM_T3_ALL
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public static function appendTypo3ParameterToArray(array &$queryArray, $mode = PARAM_T3_ALL) {
$store = Store::getInstance();
if (!isset(self::$store)) {
self::$store = Store::getInstance();
}
if ($mode === PARAM_T3_ALL) {
$queryArray['id'] = $store->getVar(TYPO3_PAGE_ID, STORE_TYPO3);
$queryArray['id'] = self::$store->getVar(TYPO3_PAGE_ID, STORE_TYPO3);
}
// TYPE
$tmp = $store->getVar(TYPO3_PAGE_TYPE, STORE_TYPO3);
$tmp = self::$store->getVar(TYPO3_PAGE_TYPE, STORE_TYPO3);
if ($tmp !== false && $tmp != 0) {
$queryArray['type'] = $tmp;
}
// Language
$tmp = $store->getVar(TYPO3_PAGE_LANGUAGE, STORE_TYPO3);
$tmp = self::$store->getVar(TYPO3_PAGE_LANGUAGE, STORE_TYPO3);
if ($tmp !== false && $tmp != 0) {
$queryArray['L'] = $tmp;
}
}
/**
* Build the form log filename. Depending on $formLog=FORM_LOG_ALL one file for all BE_USER, or $formLog=FORM_LOG_SESSION one file per BE_USER.
*
* @param $formName
* @param $formLog
* @return string
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public static function getFormLogFileName($formName, $formLog) {
if (!isset(self::$store)) {
self::$store = Store::getInstance();
}
switch ($formLog) {
case FORM_LOG_ALL:
$perBeSession = '';
break;
case FORM_LOG_SESSION:
$perBeSession = self::$store->getVar(TYPO3_BE_USER, STORE_SYSTEM) . '.';
break;
default:
throw new CodeException('Unknown mode: ' . $formLog, ERROR_UNKNOWN_TOKEN);
}
return self::$store->getVar(SYSTEM_LOG_DIR, STORE_SYSTEM) . $formName . "." . $perBeSession . "log";
}
/**
* Builds a urlencoded query string of an assoc array.
*
......@@ -729,6 +768,7 @@ class Support {
*
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public static function setFeDefaults(array $formElement, array $formSpec = array()) {
......
......@@ -49,6 +49,9 @@ class Token {
case TOKEN_BOOTSTRAP_BUTTON:
$value = '1';
break;
case TOKEN_MONITOR:
$value = '1';
break;
case TOKEN_QUESTION:
$value = DEFAULT_QUESTION_TEXT;
break;
......
......@@ -34,6 +34,8 @@ require_once(__DIR__ . '/../helper/Token.php');
require_once(__DIR__ . '/Thumbnail.php');
/*
* Defined in Constants.php: TOKEN_...
*
* u:url
* m:mailto
* p:page
......@@ -96,6 +98,7 @@ const NAME_EXTRA_CONTENT_WRAP = 'extraContentWrap';
const NAME_FILE = 'file';
const NAME_THUMBNAIL = 'thumbnail';
const NAME_THUMBNAIL_DIMENSION = 'thumbnailDimension';
const NAME_MONITOR = 'monitor';
const FINAL_HREF = 'finalHref';
const FINAL_ANCHOR = 'finalAnchor';
......@@ -210,6 +213,16 @@ class Link {
TOKEN_FILE_DEPRECATED => NAME_FILE,
TOKEN_THUMBNAIL => NAME_THUMBNAIL,
TOKEN_THUMBNAIL_DIMENSION => NAME_THUMBNAIL_DIMENSION,
TOKEN_MONITOR => NAME_MONITOR,
// The following don't need a renaming: already 'long'
TOKEN_L_FILE => TOKEN_L_FILE,
TOKEN_L_TAIL => TOKEN_L_TAIL,
TOKEN_L_APPEND => TOKEN_L_APPEND,
TOKEN_L_INTERVAL => TOKEN_L_INTERVAL,
TOKEN_L_HTML_ID => TOKEN_L_HTML_ID,
];
// Used to find double definitions.
......@@ -239,6 +252,7 @@ class Link {
* @param bool $phpUnit
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
*/
public function __construct(Sip $sip, $dbIndexData = DB_INDEX_DEFAULT, $phpUnit = false) {
$this->phpUnit = $phpUnit;
......@@ -344,12 +358,12 @@ class Link {
}
/**
* Build the whole link
* Build the whole link.
*
* @param string $str Qualifier with params. 'report'-syntax. F.e.: A:u:www.example.com|G:P:home.gif|t:Home"
*
* @return string The complete HTML encoded Link like <a href='http://example.com' class='external'><img
* src='iconf.gif' title='help text'>Description</a>
* @return string The complete HTML encoded Link like
* <a href='http://example.com' class='external'><img src='iconf.gif' title='help text'>Description</a>
* @throws CodeException
* @throws UserFormException
* @throws UserReportException
......@@ -383,35 +397,26 @@ class Link {
// 1: 'text'
case '1':
// $link = $vars[FINAL_CONTENT];
$link = $this->wrapLinkTextOnly($vars, FINAL_CONTENT);
break;
case '11':
// $link = $vars[FINAL_CONTENT];
$link = $this->wrapLinkTextOnly($vars, FINAL_CONTENT);
// $link = $this->encryptMailtoJS($vars, false);
break;
// 2: 'url'
case '2':
// $link = $vars[FINAL_HREF];
$link = $this->wrapLinkTextOnly($vars, FINAL_HREF);
break;
case '12':
// $link = $vars[FINAL_HREF];
$link = $this->wrapLinkTextOnly($vars, FINAL_HREF);
// $link = $this->encryptMailtoJS($vars, false);
break;
// 3: <a href=url ...>url</a>
case '3':
// $link = $htmlUrl . $vars[NAME_URL] . '</a>' . $vars[NAME_TOOL_TIP_JS][1];
$link = Support::wrapTag($vars[FINAL_ANCHOR], $vars[FINAL_HREF]);
break;
case '13':
$link = Support::wrapTag($vars[FINAL_ANCHOR], $vars[FINAL_HREF]);
// $vars[NAME_TEXT] = $vars[NAME_MAIL];
// $link = $this->encryptMailtoJS($vars, true);
break;
// 4: <a href=url ...>Text</a>
......@@ -420,7 +425,6 @@ class Link {
break;
case '14':
$link = Support::wrapTag($vars[FINAL_ANCHOR], $vars[FINAL_CONTENT]);
// $link = $this->encryptMailtoJS($vars, true);
break;
case '21':
......@@ -449,7 +453,7 @@ class Link {
throw new UserReportException ("Mode not implemented. internal render mode=$mode", ERROR_UNKNOWN_MODE);
break;
case '8':
$link = substr($vars[FINAL_HREF],12); // strip 'index.php?s='
$link = substr($vars[FINAL_HREF], 12); // strip 'index.php?s='
break;
default:
......@@ -471,13 +475,11 @@ class Link {
$regular = array();
foreach ($param as $value) {
switch (substr($value, 0, 1)) {
case TOKEN_DOWNLOAD:
$prio[] = $value;
break;
default:
$regular[] = $value;
break;
$key = substr($value, 0, 2);
if ($key == TOKEN_DOWNLOAD . ':') {
$prio[] = $value;
} else {
$regular[] = $value;
}
}
......@@ -618,8 +620,10 @@ class Link {
NAME_ENCRYPTION => '0',
NAME_DELETE => '',
NAME_MONITOR => '0',
NAME_LINK_CLASS => '', // class name
NAME_LINK_CLASS_DEFAULT => '', // Depending of 'as page' or 'as url'. Only used if class is not explizit set.
NAME_LINK_CLASS_DEFAULT => '', // Depending of 'as page' or 'as url'. Only used if class is not explicit set.