コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
    /**
     * 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;
    }