/** * Generates the query from the db select array. * * @param integer $sysLanguage Language uid * @return void */ function setSelectionLanguage($sysLanguage = 0) { $fieldMapping = array(); if ($sysLanguage) { $fieldMapping = tx_dam_db::getLanguageOverlayFields('tx_dam', 'tx_dam_lgovl'); } $this->sl->setFieldMapping('tx_dam', $fieldMapping); }
/** * Main function * * @return string HTML output */ function main() { global $BE_USER, $LANG, $BACK_PATH, $TCA, $TYPO3_CONF_VARS; $content = ''; $table = 'tx_dam'; // // get records by query depending on option 'Show deselected only' // $origSel = $this->pObj->selection->sl->sel; if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_onlyDeselected']) { if (is_array($this->pObj->selection->sl->sel['NOT']['txdamRecords'])) { $excludeUidList = array_keys($this->pObj->selection->sl->sel['NOT']['txdamRecords']); } else { $excludeUidList = array(0); //dummy } unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']); $this->pObj->selection->addSelectionToQuery(); if (is_array($excludeUidList)) { $this->pObj->selection->qg->query['WHERE']['WHERE']['NOT_txdamRecords'] = 'AND tx_dam.uid IN (' . $GLOBALS['TYPO3_DB']->cleanIntList(implode(',', $excludeUidList)) . ')'; } } else { // will display deselected unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']); $this->pObj->selection->addSelectionToQuery(); } $this->pObj->selection->sl->sel = $origSel; // // set language query // $langRows = $this->pObj->getLanguages($this->pObj->defaultPid); $langCurrent = intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']); if (!isset($langRows[$langCurrent])) { $langCurrent = $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector'] = key($langRows); } $langQuery = ''; $languageField = $TCA[$table]['ctrl']['languageField']; if ($langCurrent && $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') { // if ($langCurrent) { This works but create NULL columns for non-translated records so we need to use language overlay anyway $lgOvlFields = tx_dam_db::getLanguageOverlayFields($table, 'tx_dam_lgovl'); $languageField = $TCA[$table]['ctrl']['languageField']; $transOrigPointerField = $TCA[$table]['ctrl']['transOrigPointerField']; $this->pObj->selection->setSelectionLanguage($langCurrent); $this->pObj->selection->qg->query['SELECT']['tx_dam as tx_dam_lgovl'] = implode(', ', $lgOvlFields) . ', tx_dam.uid as _dlg_uid, tx_dam.title as _dlg_title'; $this->pObj->selection->qg->query['LEFT_JOIN']['tx_dam as tx_dam_lgovl'] = 'tx_dam.uid=tx_dam_lgovl.' . $transOrigPointerField; if ($this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND tx_dam_lgovl.' . $languageField . '=' . $langCurrent; $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND tx_dam_lgovl.deleted=0'; } else { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND (tx_dam_lgovl.' . $languageField . ' IN (' . $langCurrent . ', 0, -1) )'; $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND (tx_dam_lgovl.sys_language_uid=1 OR tx_dam.sys_language_uid=0 )'; } } else { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam.' . $languageField] = 'AND tx_dam.' . $languageField . ' IN (0,-1)'; } // // Add the current selection to the query // # $this->pObj->selection->addSelectionToQuery(); // // Use the current selection to create a query and count selected records // $this->pObj->selection->execSelectionQuery(TRUE); // // output header: info bar, result browser, .... // $content .= $this->pObj->guiItems->getOutput('header'); $content .= $this->pObj->doc->spacer(10); // any records found? if ($this->pObj->selection->pointer->countTotal) { // // init db list object // $dblist = t3lib_div::makeInstance('tx_dam_listrecords'); $dblist->setParameterName('form', $this->pObj->formName); $dblist->init($table); $dblist->setActionsEnv(array('currentLanguage' => $langCurrent, 'allowedLanguages' => $langRows)); // // process multi action if needed // if ($processAction = $dblist->getMultiActionCommand()) { if ($processAction['onItems'] === '_all') { $uidList = array(); $res = $this->pObj->selection->execSelectionQuery(); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $uidList[] = $row['uid']; } $itemList = implode(',', $uidList); } else { $itemList = $processAction['onItems']; $uidList = t3lib_div::trimExplode(',', $itemList, true); } if ($uidList) { switch ($processAction['actionType']) { case 'url': $url = str_replace('###ITEMLIST###', $itemList, $processAction['action']); header('Location: ' . $url); exit; break; case 'tce-data': $params = ''; foreach ($uidList as $uid) { $params .= str_replace('###UID###', $uid, $processAction['action']); } $url = $GLOBALS['SOBE']->doc->issueCommand($params, -1); $url = $BACK_PATH . 'tce_db.php?&redirect=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')) . '&vC=' . $BE_USER->veriCode() . '&prErr=1&uPT=1' . $params; header('Location: ' . $url); exit; break; } } } t3lib_div::loadTCA($table); // // set fields to display // $titleColumn = $TCA[$table]['ctrl']['label']; $allFields = tx_dam_db::getFieldListForUser($table); $selectedFields = t3lib_div::_GP('tx_dam_list_list_displayFields'); $selectedFields = is_array($selectedFields) ? $selectedFields : explode(',', $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields']); // remove fields that can not be selected if (is_array($selectedFields)) { $selectedFields = array_intersect($allFields, $selectedFields); $selectedFields = array_merge(array($titleColumn), $selectedFields); } else { $selectedFields = array(); $selectedFields[] = $titleColumn; } // store field list $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields'] = implode(',', $selectedFields); $GLOBALS['BE_USER']->pushModuleData($this->pObj->MCONF['name'], $this->pObj->MOD_SETTINGS); // // set query and sorting // $orderBy = $TCA[$table]['ctrl']['sortby'] ? 'tx_dam.' . $TCA[$table]['ctrl']['sortby'] : 'tx_dam.title'; if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField']) { if (in_array($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $allFields)) { $orderBy = 'tx_dam.' . $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField']; if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']) { $orderBy .= ' DESC'; } } } $queryFieldList = tx_dam_db::getMetaInfoFieldList(false, $selectedFields); $this->pObj->selection->qg->addSelectFields($queryFieldList); $this->pObj->selection->qg->addOrderBy($orderBy); // // exec query // $this->pObj->selection->addLimitToQuery(); $res = $this->pObj->selection->execSelectionQuery(); // // init iterator for query // $conf = array('table' => 'tx_dam', 'countTotal' => $this->pObj->selection->pointer->countTotal); if ($langCurrent > 0 and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] !== 'exclusive') { $dbIterator = new tx_dam_iterator_db_lang_ovl($res, $conf); $dbIterator->initLanguageOverlay($table, $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']); } else { $dbIterator = new tx_dam_iterator_db($res, $conf); } // // make db list // $dblist->setDataObject($dbIterator); // add columns to list $dblist->clearColumns(); $cc = 0; foreach ($selectedFields as $field) { $fieldLabel = is_array($TCA[$table]['columns'][$field]) ? preg_replace('#:$#', '', $LANG->sL($TCA[$table]['columns'][$field]['label'])) : '[' . $field . ']'; $dblist->addColumn($field, $fieldLabel); $cc++; if ($cc == 1) { // add control at second column $dblist->addColumn('_CONTROL_', ''); $cc++; } } // enable display of action column $dblist->showActions = true; // enable display of multi actions $dblist->showMultiActions = $this->pObj->MOD_SETTINGS['tx_dam_list_list_showMultiActions']; // enable context menus $dblist->enableContextMenus = $this->pObj->config_checkValueEnabled('contextMenuOnListItems', true); // Enable/disable display of thumbnails $dblist->showThumbs = $this->pObj->MOD_SETTINGS['tx_dam_list_list_showThumb']; // Enable/disable display of AlternateBgColors $dblist->showAlternateBgColors = $this->pObj->config_checkValueEnabled('alternateBgColors', true); $dblist->setPointer($this->pObj->selection->pointer); $dblist->setCurrentSorting($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']); $dblist->setParameterName('sortField', 'SET[tx_dam_list_list_sortField]'); $dblist->setParameterName('sortRev', 'SET[tx_dam_list_list_sortRev]'); $this->pObj->doc->JScodeArray['dblist-JsCode'] = $dblist->getJsCode(); // todo Clipboard // It is set, if the clickmenu-layer is active AND the extended view is not enabled. # $dblist->dontShowClipControlPanels = $CLIENT['FORMSTYLE'] && !$BE_USER->uc['disableCMlayers']; #$content.= '<form action="'.htmlspecialchars(t3lib_div::linkThisScript()).'" method="post" name="'.$dblist->paramName['form'].'">'; // get all avalibale languages for the page if ($languageSwitch = $this->pObj->languageSwitch($langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']))) { $this->pObj->markers['LANGUAGE_SELECT'] = '<div class="languageSwitch">' . $languageSwitch . '</div>'; } else { $this->pObj->markers['LANGUAGE_SELECT'] = ''; } // wraps the list table with the form $content .= tx_dam_SCbase::getFormTag(); $content .= $dblist->getListTable(); $content .= '</form>'; $fieldSelectBoxContent = $this->fieldSelectBox($table, $allFields, $selectedFields); $content .= $this->pObj->buttonToggleDisplay('fieldselector', $LANG->getLL('field_selector'), $fieldSelectBoxContent); } else { // no search result: showing selection box if ($languageSwitch = $this->pObj->languageSwitch($langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']))) { $this->pObj->markers['LANGUAGE_SELECT'] = '<div class="languageSwitch">' . $languageSwitch . '</div>'; } else { $this->pObj->markers['LANGUAGE_SELECT'] = ''; } // is in footer now $content .= $this->pObj->getCurrentSelectionBox(); } return $content; }
/** * Main function * * @return string HTML output */ function main() { global $BE_USER, $LANG, $BACK_PATH, $TCA; $content = ''; $table = 'tx_dam'; t3lib_div::loadTCA($table); // // set language query // $this->langRows = $this->pObj->getLanguages($this->pObj->defaultPid); $this->langCurrent = intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']); if (!isset($this->langRows[$this->langCurrent])) { $this->langCurrent = $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector'] = key($this->langRows); } $langQuery = ''; $languageField = $TCA[$table]['ctrl']['languageField']; if ($this->langCurrent and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') { // if ($this->langCurrent) { This works but create NULL columns for non-translated records so we need to use language overlay anyway $lgOvlFields = tx_dam_db::getLanguageOverlayFields($table, 'tx_dam_lgovl'); $languageField = $TCA[$table]['ctrl']['languageField']; $transOrigPointerField = $TCA[$table]['ctrl']['transOrigPointerField']; $this->pObj->selection->setSelectionLanguage($this->langCurrent); $this->pObj->selection->qg->query['SELECT']['tx_dam as tx_dam_lgovl'] = implode(', ', $lgOvlFields) . ', tx_dam.uid as _dlg_uid, tx_dam.title as _dlg_title'; $this->pObj->selection->qg->query['LEFT_JOIN']['tx_dam as tx_dam_lgovl'] = 'tx_dam.uid=tx_dam_lgovl.' . $transOrigPointerField; if ($this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND tx_dam_lgovl.' . $languageField . '=' . $this->langCurrent; $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND tx_dam_lgovl.deleted=0'; } else { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND (tx_dam_lgovl.' . $languageField . ' IN (' . $this->langCurrent . ',0,-1) )'; $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND (tx_dam_lgovl.sys_language_uid=1 OR tx_dam.sys_language_uid=0 )'; } } else { $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam.' . $languageField] = 'AND tx_dam.' . $languageField . ' IN (0,-1)'; } // // set query and sorting // $allFields = tx_dam_db::getFieldListForUser($table); if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField']) { if (in_array($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'], $allFields)) { $orderBy = 'tx_dam.' . $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField']; } } else { $orderBy = $TCA[$table]['ctrl']['sortby'] ? $TCA[$table]['ctrl']['sortby'] : $TCA[$table]['ctrl']['default_sortby']; $orderBy = $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy); $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'] = $orderBy; } if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortRev']) { $orderBy .= ' DESC'; } $this->pObj->selection->qg->addOrderBy($orderBy); // // Use the current selection to create a query and count selected records // $this->pObj->selection->addSelectionToQuery(); $this->pObj->selection->execSelectionQuery(TRUE); // // output header: info bar, result browser, .... // $content .= $this->pObj->guiItems->getOutput('header'); $content .= $this->pObj->doc->spacer(10); // any records found? if ($this->pObj->selection->pointer->countTotal) { // TODO move to scbase (see tx_dam_browser too) if (is_array($allFields) && count($allFields)) { $fieldsSelItems = array(); foreach ($allFields as $field => $title) { $fL = is_array($TCA[$table]['columns'][$field]) ? preg_replace('#:$#', '', $GLOBALS['LANG']->sL($TCA[$table]['columns'][$field]['label'])) : '[' . $field . ']'; $fieldsSelItems[$field] = t3lib_div::fixed_lgd_cs($fL, 15); } $sortingSelector = $GLOBALS['LANG']->sL('LLL:EXT:dam/lib/locallang.xml:labelSorting', 1) . ' '; $sortingSelector .= t3lib_befunc::getFuncMenu('', 'SET[tx_dam_list_thumbs_sortField]', $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'], $fieldsSelItems); if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortRev']) { $href = t3lib_div::linkThisScript(array('SET[tx_dam_list_thumbs_sortRev]' => '0')); $sortingSelector .= '<button name="SET[tx_dam_list_thumbs_sortRev]" type="button" onclick="self.location.href=\'' . htmlspecialchars($href) . '\'">' . '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/pil2up.gif', 'width="12" height="7"') . ' alt="" />' . '</button>'; } else { $href = t3lib_div::linkThisScript(array('SET[tx_dam_list_thumbs_sortRev]' => '1')); $sortingSelector .= '<button name="SET[tx_dam_list_thumbs_sortRev]" type="button" onclick="self.location.href=\'' . htmlspecialchars($href) . '\'">' . '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/pil2down.gif', 'width="12" height="7"') . ' alt="" />' . '</button>'; } $sortingSelector = '<form action="' . htmlspecialchars(t3lib_div::linkThisScript()) . '" method="post">' . $sortingSelector . '</form>'; } $this->pObj->markers['LANGUAGE_SELECT'] = $this->pObj->languageSwitch($this->langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector'])); $content .= $this->pObj->contentLeftRight($sortingSelector, ''); $content .= $this->pObj->doc->spacer(10); // // creates thumbnail list // // limit query for browsing $this->pObj->selection->addLimitToQuery(); $res = $this->pObj->selection->execSelectionQuery(); $showElements = array(); if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showTitle']) { $showElements[] = 'title'; } if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showInfo']) { $showElements[] = 'info'; } if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showIcons']) { $showElements[] = 'actions'; } // extra CSS code for HTML header $this->pObj->doc->inDocStylesArray['tx_dam_SCbase_dia'] = tx_dam_guiFunc::getDiaStyles($this->diaSize, $this->diaMargin, 5); $code = ''; // // init iterator for query // $conf = array('table' => 'tx_dam', 'countTotal' => $this->pObj->selection->pointer->countTotal); if ($this->langCurrent > 0 and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] !== 'exclusive') { $dbIterator = new tx_dam_iterator_db_lang_ovl($res, $conf); $dbIterator->initLanguageOverlay($table, $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']); } else { $dbIterator = new tx_dam_iterator_db($res, $conf); } if ($dbIterator->count()) { while ($dbIterator->valid() and $dbIterator->currentPointer < $this->pObj->selection->pointer->itemsPerPage) { $row = $dbIterator->current(); $onClick = $this->pObj->doc->wrapClickMenuOnIcon('', $table, $row['uid'], $listFr = 1, $addParams = '', $enDisItems = '', $returnOnClick = TRUE); $actions = $this->getItemControl($row); $code .= tx_dam_guiFunc::getDia($row, $this->diaSize, $this->diaMargin, $showElements, $onClick, true, $actions); $dbIterator->next(); } } $content .= $this->pObj->doc->spacer(5); $content .= $this->pObj->doc->section('', '<div style="line-height:' . ($this->diaSize + 7 + 8) . 'px;">' . $code . '</div><br style="clear:left" />', 0, 1); } return $content; }