myFiles v0.1

Представляю на суд коммюнити первую недобету «управлятора» загруженными файлами.
Установка.
0. Создать таблицу в базе

CREATE TABLE IF NOT EXISTS `prefix_files` (
  `id` int(11) NOT NULL auto_increment,
  `address` varchar(255) NOT NULL,
  `desc` varchar(255) NOT NULL,
  `ref` varchar(255) NOT NULL,
  `owner` int(11) NOT NULL,
  `datetime` char(19) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

1. Хаки шаблонов и файлов:
templates/skin/new/actions/ActionTopic/add.tpl

находим {include file='window_load_img.tpl' sToLoad='topic_text'}
и добавляем {include file='window_load_myfiles.tpl' sToLoad='topic_text'}



находим <a href="#" onclick="showImgUploadForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/img.gif" width="20" height="20" title="{$aLang.panel_image}"></a>
и добавляем <a href="#" onclick="showMyFilesUploadForm(); return false;" class="button"><img src="{$DIR_STATIC_SKIN}/images/panel/myfiles.gif" width="20" height="20" title="Загрузка файлов"></a>


*myfiles.gif должен находиться по адресу templates/skin/new/images/panel/

livestreet/templates/skin/new/header_top.tpl

Находим строку
{$aLang.user_settings} <a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SETTINGS}/profile/" class="author">{$aLang.user_settings_profil
e}</a> | <a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SETTINGS}/tuning/" class="author">{$aLang.user_settings_tuning}</a>
И добавляем:
| <a href="{$DIR_WEB_ROOT}/myfiles/" class="author">файлов</a>


livestreet/templates/skin/new/js/other.js
Добавляем следующее:

var winFormMyFilesUpload;
function hideMyFilesUploadForm() {
        winFormMyFilesUpload.hide();
}
function showMyFilesUploadForm() {
        if (Browser.Engine.trident) {
                //return true;
        }
        if (!winFormMyFilesUpload) {
                winFormMyFilesUpload=new StickyWin.Modal({content: $('window_load_myfiles'), closeClassName: 'close-block', useIframeShim: false});
        }
        winFormMyFilesUpload.show();
        winFormMyFilesUpload.pin(true);
        return false;
}
function ajaxUploadMyFiles(value,sToLoad) {
        sToLoad=$(sToLoad);
        var req = new JsHttpRequest();
        req.onreadystatechange = function() {
                if (req.readyState == 4) {
                        if (req.responseJS.bStateError) {
                                msgErrorBox.alert(req.responseJS.sMsgTitle,req.responseJS.sMsg);
                        } else {
                                sToLoad.insertAtCursor(req.responseJS.sText);
                                hideVideoUploadForm();
                        }
                }
        }
        req.open(null, DIR_WEB_ROOT+'/include/ajax/uploadMyFiles.php', true);
        req.send( { value: value } );
}


/var/www/livestreet/config/config.php

Добавляем строку define('DIR_UPLOADS_FILES',DIR_UPLOADS.'/files');

и создаем папку uploads/files с правами 777

2. Файлы модуля:
Распаковываем архив в корень установленного движка.

Настройка:
Размер заливаемых файлов на данный момент ограничен исключительно настройками сервера.
Настройка типов файлов, которые можно залить на сервер производится в файле uploadMyFiles.php, строка
$fileTypes = array(«flv»,«mp3»,«jpg»);

Скачать с народа.
Скрины:



P.S. Да, предлагаемая иконка чудовищна — увы мне!

7 комментариев

avatar
Пример бы живой еще.
avatar
livetundra.nurnet.ru — но на очень дохлом канале. Логин и пароль guest.
avatar
livestreet.ru/blog/tips_and_tricks/1926.html было такое дело. Там все заглохло. Тебе плюс, продолжай и получится, возможно еще лучше.
avatar
Вся вышеизложенная идея реализована отлично и в полной мере соответствует описанию (успел глянуть рабочий пример на сайте), за что автору спасибо! Успехов в дальнейшем развитии задумки.
avatar
69 строка:


$sText='<a href="'.DIR_WEB_ROOT.$sFile.'">'.$_POST['title'].'</a>';

avatar
При добалении еще нескольких расширений файлов в uploadMyFiles.php, перестает работать.
avatar
Обновитесь до версии 0.2. Тестировал на списке из 15 расширений — проблем выявлено не было.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.