/** * 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; }
/** * Returns a dia like thumbnail * * @param array $row tx_dam record * @param integer $diaSize dia size * @param integer $diaMargin dia margin * @param array $showElements Extra elements to show: "title,info,icons" * @param string $onClick: ... * @param boolean $makeIcon: ... * @param string $actions action content to be displayed * @return string HTML output */ function getDia($row, $diaSize = 115, $diaMargin = 10, $showElements = '', $onClick = NULL, $makeIcon = TRUE, $actions = '') { if (!is_array($showElements)) { $showElements = t3lib_div::trimExplode(',', $showElements, 1); } // extra CSS code for HTML header if (is_object($GLOBALS['SOBE']) and !isset($GLOBALS['SOBE']->doc->inDocStylesArray['tx_dam_SCbase_dia'])) { $GLOBALS['SOBE']->doc->inDocStylesArray['tx_dam_SCbase_dia'] = tx_dam_guiFunc::getDiaStyles($diaSize, $diaMargin); } // use css/stylesheet $iconBgColor = t3lib_div::modifyHTMLcolor($GLOBALS['SOBE']->doc->bgColor, -10, -10, -10); $titleLen = ceil(30 * ($diaSize - $diaMargin) / (200 - $diaMargin)); $hpixels = $row['hpixels']; $vpixels = $row['vpixels']; if ($hpixels and $vpixels) { list($hpixels, $vpixels) = tx_dam_image::calcSize($hpixels, $vpixels, $diaSize, $diaSize); } else { if ($hpixels > $diaSize) { $hpixels = $diaSize; } if ($vpixels > $diaSize) { $vpixels = $diaSize; } } $uid = $row['uid']; $imgAttributes = array(); $imgAttributes['title'] = str_replace("\n", '', t3lib_div::fixed_lgd_cs($row['description'], 50)); if ($hpixels) { $imgAttributes['style'] = 'margin-top:' . (ceil(($diaSize - $vpixels) / 2) + $diaMargin) . 'px;'; } else { $imgAttributes['style'] = 'margin-top:' . $diaMargin . 'px;'; } $imgAttributes['onclick'] = $onClick; $thumb = tx_dam_image::previewImgTag($row, $diaSize, $imgAttributes); if (!$makeIcon and empty($thumb)) { return ''; } if (empty($thumb)) { $thumb = tx_dam_guiFunc::getMediaTypeIconBox($row); if ($onClick) { $thumb = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $thumb . '</a>'; } } $descr = ''; if (in_array('title', $showElements)) { $descr .= htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $titleLen)) . '<br />'; } if (in_array('info', $showElements)) { $code = strtoupper($row['file_type']) . ', '; $code .= $row['hpixels'] ? $row['hpixels'] . 'x' . $row['vpixels'] . ', ' : ''; $code .= t3lib_div::formatSize($row['file_size']); $descr .= '<span class="txdam-descr">' . htmlspecialchars($code) . '</span>'; } if ($descr) { $descr = '<div class="txdam-title">' . $descr . '</div>'; } $icons = ''; $iconArr = array(); if (in_array('icons', $showElements)) { // deprecated $iconArr[] = tx_dam_SCbase::icon_editRec('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::btn_editRec_inNewWindow('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::icon_infoRec('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::btn_removeRecFromSel('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); } if (in_array('actions', $showElements)) { $actions; } $icons = $icons ? '<div style="margin:3px;">' . implode('<span style="width:40px;"></span>', $iconArr) . '</div>' : ''; $actions = $actions ? '<div style="margin:3px;">' . $actions . '</div>' : ''; $diaCode = ' <table class="txdam-dia" cellspacing="0" cellpadding="0" border="0"> <tr><td><span class="txdam-dia">' . $thumb . '</span></td></tr> ' . ($descr . $icons . $actions ? '<tr><td align="center" bgcolor="' . $iconBgColor . '">' . $descr . $icons . $actions . '</td></tr>' : '') . ' </table> '; return $diaCode; }