/** * 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, $TYPO3_CONF_VARS; $content = ''; $content .= tx_dam_SCbase::getFormTag(); // // Use the current selection to create a query and count selected records // $this->pObj->selection->addSelectionToQuery(); $this->pObj->selection->execSelectionQuery(TRUE); if ($this->pObj->selection->pointer->countTotal) { $batch = t3lib_div::makeInstance('tx_dam_batchProcess'); if ($batch->processGP()) { // result info $content .= $this->pObj->doc->section('', $this->pObj->getHeaderBar('', $this->pObj->btn_back()), 0, 1); $content .= $this->pObj->doc->spacer(10); $infoFields = $batch->getProcessFieldList(); $this->pObj->selection->execSelectionQuery(FALSE, ' DISTINCT ' . $infoFields); $batch->runBatch($this->pObj->selection->res); $content .= $batch->showResult(); } else { // header with back button $content .= $this->pObj->doc->section('', $this->pObj->getHeaderBar($this->pObj->getResultInfo(false)), 0, 1); $content .= $this->pObj->doc->spacer(10); $content .= $batch->showPresetForm(); } } else { // // output header: info bar, result browser, .... // $content .= $this->pObj->guiItems->getOutput('header'); $content .= $this->pObj->doc->spacer(10); // no search result: showing selection box $content .= $this->pObj->doc->section('', $this->pObj->getCurrentSelectionBox(), 0, 1); } $content .= '</form>'; return $content; }