/**
  * 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 table with some info and a thumbnail from a record
     *
     * @param	array		$row Record array
     * @param	string		$extraContentLeft Extra HTML content for left column
     * @param	string		$extraContentMiddle Extra HTML content for middle column
     * @param	string		$extraContentRight Extra HTML content for right column
     * @return	string		HTML content
     */
    function getRecordInfoHeader($row, $extraContentLeft = '', $extraContentMiddle = '', $extraContentRight = '')
    {
        global $LANG;
        $content = '';
        $icon = tx_dam_guiFunc::getMediaTypeIconBox($row);
        $content .= '
			<table border="0" cellpadding="0" cellspacing="0" width="100%">
				<tr>
					<td valign="top" width="1%" align="center">' . $icon . '<br />' . $extraContentLeft . '</td>
					<td valign="top" align="left" style="padding-left:20px;">';
        if (isset($row['title'])) {
            $content .= '<div class="tableRow"><strong>' . $LANG->sL('LLL:EXT:lang/locallang_general.xml:LGL.title', 1) . '</strong><br />' . tx_dam_guiFunc::tools_insertWordBreak(htmlspecialchars($row['title']), 35) . '</div>';
        }
        $content .= '<div class="tableRow"><strong>' . $LANG->sL('LLL:EXT:dam/locallang_db.xml:tx_dam_item.file_name', 1) . '</strong><br />' . tx_dam_guiFunc::tools_insertWordBreak(htmlspecialchars($row['file_name']), 35) . '</div>';
        $content .= '<div class="tableRow"><strong>' . $LANG->sL('LLL:EXT:dam/locallang_db.xml:tx_dam_item.file_path', 1) . '</strong><br />' . str_replace('/', '/<wbr>', htmlspecialchars($row['file_path'])) . '</div>';
        if ($row['media_type'] == TXDAM_mtype_image) {
            $out = '';
            $out .= $row['hpixels'] ? $row['hpixels'] . 'x' . $row['vpixels'] . ' px, ' : '';
            $out .= t3lib_div::formatSize($row['file_size']);
            $out .= $row['color_space'] ? ', ' . $LANG->sL(tx_dam_guifunc::getLabelFromItemlist('tx_dam', 'color_space', $row['color_space'])) : '';
            $content .= '<div class="tableRow"><nobr>' . htmlspecialchars($out) . '</nobr></div>';
        }
        $content .= $extraContentMiddle . '
					</td>';
        $thumb = tx_dam_guiFunc::getDia($row, 115, 5, $showElements = '', $onClick = NULL, $makeIcon = FALSE);
        $content .= '
					<td valign="top" width="1%" class="extraContentRight">' . $thumb . $extraContentRight . '</td>';
        $content .= '
				</tr>
			</table>';
        return '<div class="recordInfoHeader">' . $content . '</div>';
    }