Блог пользователя - pvb-d

Прикрепление файла с кириллицей в имени файла

11 ноября 2009 в 15:31

Пробую прикрепить файл с кириллицей в наименовании (напр. "график.xls") к материалу, используя стандартный модуль upload.

Сообщает об ошибке:

Ваш файл был переименован в xls. из соображений безопасности.

Указанный файл xls. не может быть загружен. Прикреплять можно только файлы с расширениями: xcf svg jpg jpeg gif tiff png mng txt doc xls sxw sxc tex ps pdf rtf djvu ppt pps odt ods odp tgz tar.gz bz2 tar.bz2 tbz2 zip rar psd po pot module info xml xpi diff install patch ogg spx.

Анализ кода (file.inc функция file_save_upload в строке ~528) показал что некорректно обрабатывает функция basename имя файла с кириллицей (на входе "график.xls" на выходе ".xls")

    // Begin building file object.
    $file = new stdClass();
    $file->filename = file_munge_filename(trim(basename($_FILES['files']['name'][$source]), '.'), $extensions);

Попробовал на drupal.ru - ситуация аналогичная

Помогло использование модуля transliteration.

upd: пока писал, нашел решение с basename здесь

png из misc/* в спрайт

29 сентября 2009 в 23:41

Продолжение темы по оптимизации загрузки картинок с помощью модуля Imageset. (остапа понесло, называется)

В стандартной поставке drupal в папке misc имеется несколько png-файлов.

menu-*.png - используется в system.css, можно создать спрайт и переопределить CSS, но это не для нашей темы.

Под нашу задачу больше подходят:
arrow-*.png - стрелки сортировки для таблиц
forum-*.png - иконки для стандартного форума
watchdog-*.png - иконки из watchdog

Все картинки в этих группах имеют одинаковый размер (кроме watchdog-error.png, но это я думаю поправимо) и для отображения в коде drupal для них используется вызов theme('image', ...).

Для примера будем использовать картинки arrow-asc.png и arrow-desc.png

1) Генерируем одним из свободных генераторов спрайтов картинку.
картинка

2) Добавляем ее в imageset (mysite/admin/settings/imageset) Name: arrow, Size: 13x13, Full size: 27x27, Offset: 7x7, Orientation: verical

3) В свой теме в файле template.php (если его нет, то создаем) переопределяем вывод theme(image

<?php
function phptemplate_image($path$alt ''$title ''$attributes NULL$getsize TRUE) {
  
$name '';
  switch (
$path) {
    case 
'misc/arrow-asc.png'// если стрелка для прямой сортировки
      
$name 'arrow:1'// используем imageset arrow  с номером картинки 1
      
break;
    case 
'misc/arrow-desc.png':  // если стрелка для обратной сортировки?>

Сайт Пермского ЦСМ на drupal

31 декабря 2008 в 13:31

Мой первый сайт на drupal государственной конторы ФГУ "Пермский ЦСМ"

Хочется услышать мнение профессионалов и любителей также.

Иконки для меню или графические кнопки

21 декабря 2008 в 3:58

Периодически на форуме возникают вопросы о том как делать иконки для меню или меню из графических кнопок
Есть несколько вариантов решения:
- вручную темизировать menu_item по примеру http://www.nicklewis.org/node/843
- или использовать сторонние модули (например [module=imagemenu])

Здесь я опишу как это можно реализовать с помощью модуля [module=imageset] в сязке с menuicon (http://www.drupal.ru/node/21545)

Сделаем меню с иконками аля Drupal.ru

Модуль управления, отображения таблиц БД

22 мая 2008 в 1:16

Возникла необходимость ввода и показа информации ввиде таблиц.
Связка CCK+Views показалась слишком накладной (на каждую запись создавать ноду)
Подходит модуль Tablemanager, но не устраивает в нем хранение данных в одном поле (возможны тормоза на сравнимо большом кол-ве записей)

Родился данный модуль Tabledetail (в основе был интерфейс Tablemanager)
из возможностей
- создание таблиц, управление колонками
- типы значениий колонок: строка, целое, число, дата
- API для определения новых типов, например в модуле tabledetailadd определены: select, text, autonode

Модуль версия для печати

14 января 2008 в 11:12

Взяв за основу это сделал модуль
Переключение css(media=print на media=screen) java-скриптом, если js отключен то формируется страница site/*/printversion
возможность переопределить вид для печати с помощью hook_printversion
Может кому пригодится. Пока на русском. Пожелания приветствуются.

__________________________