5
Янв

Symfony: У плагина sfYandexYMLPlugin появился PEAR пакет

Наконец дошли руки создать и выложить пакет, который можно установить из командной строки, например таким образом:

./symfony plugin:install -s beta sfYandexYMLPlugin

Адрес плагина: http://www.symfony-project.org/plugins/sfYandexYMLPlugin

17
Ноя

Apostrope CMS: Ошибка при добавление русских названий страниц.

UPDATED: В версии 1.5 данный баг будет пофикшен, заметка касается только версии 1.4

Ошибка возникает когда пытаешься установить название страницы русскими символами (больше 12 символов).
После попытки сохранения, сайт будет выплёвывать нечто подобное:

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xD0</str...' for column 'diff' at row 1

Багрепорт по этой проблеме я в свое время уже выкладывал в trac апостофа и его возможно скоро удастся решить, но на всякий случай выкладываю пару шагов по исправлению ошибки, не прибегая к ковырянию исходников самой CMS.

Решение:

1. копируем файл aString.class.php из плагина апострофа в директорию lib нашего проекта.

cp plugins/apostrophePlugin/lib/toolkit/aString.class.php lib/aString.class.php

2. Открываем в редакторе это файл и заменяем метод limitCharacters(), на представленный ниже:

//aString.class.php:

  public static function limitCharacters($s, $length, $options = array())
  {
    $ellipsis = "";
    if (isset($options['append_ellipsis']) && $options['append_ellipsis'])
    {
      $ellipsis = "...";
    }
    if ($length < 12)
    {
      // Not designed to be elegant below this length
      return mb_substr($s, 0, $length);
    }
    if (mb_strlen($s) > $length)
    {
      $s = mb_substr($s, 0, $length - mb_strlen($ellipsis));
      $slength = mb_strlen($s);
      for ($i = 1; ($i <= 10); $i++)
      {
        $c = mb_substr($s, $slength - $i, 1);
        if (($c === ' ') || ($c === '\t') || ($c === '\r') || ($c === '\n'))
        {
          return mb_substr($s, 0, $slength) . $ellipsis;
        }
      }
      return $s . $ellipsis;
    }
    return $s;
  }

Все, удачного использования!
PS Не забывайте, что теперь при обновлении плагина апострофа, в нем может поменяться файл aString.class.php, но он не будет подцепляться так как у нас в директории lib проекта лежит аналогичный файл, так что это придется отслеживать.

18
Окт

Вакансия: Программист PHP/Symfony (Москва)

Обязанности:

  • Разработка и поддержка сайтов на PHP с  использованием фреймворка Symfony

Требования:

  • PHP
  • Mysql
  • HTML/CSS
  • JavaScript
  • Subversion
  • Linux, Apache, Nginx…
  • Технический английский язык

Дополнительным плюсом будет:

  • Опыт создания интернет-магазинов
  • Разговорный английский язык
  • Знание различный языков программирования
  • Знания различный технологий и фреймворков
  • Опыт работы с Apostrophe CMS

Условия:

  • Полный рабочий день
  • Работа в офисе (м. Шаболовская)
  • ЗП от 30 000 до 70 000

Резюме высылайте на адрес support (s) hotsupport.ru

13
Сен

Уехал в Нью-Дели

Вернусь 5го октября.
На это время я никуда не пропал, буду всегда на связи через имейл или скайп, все вопросы будут решаться удаленным способом :)
Также будет индийский номер мобильного, так что если будет нужно, можно будет и позвонить.

28
Авг

Apostrophe CMS – изменение стандартной слугофикации (slugify)

В Apostrophe CMS при сохранении страницы или других элементов автоматически преобразует их названия к виду пригодному для отображения в url, но к сожалению для кириллических строк оно работает не так как хочется. Мне например, необходимо чтобы кириллические символы транслировались в аналоги латинского алфавита.

К счастью такое поведение CMS легко исправить без ковыряния в исходниках Apostrophe, для этого надо:

  • Скопировать файл "/plugins/apostrophePlugin/lib/aTools.class.php" куда-нибудь в каталог "/lib" например "/lib/aTools.class.php". В этом случае будет использовать наш класс, а не класс из построфа.
  • Переопределить статический метод slugify()

Пример:

<?php
// /lib/aTools.class.php
class aTools extends BaseaTools
{
  public static function slugify($path, $allowSlashes = false)
  {
    $path = hsTextUtils::translit($path);
    return parent::slugify($path, $allowSlashes);
  }
}

В данном примере hsTextUtils::translit() – это мой метод с помощью которого я делаю трансляцию кириллических символов в латинские, вам следует здесь использовать свой.

1
Июл

Apostrophe — CMS на Symfony с визуальным представлением

Apostrophe — CMS написанная на PHP, Symfony.
В данной CMS нет отдельной страницы для администрирования, все данные редактируются непосредственно в том месте где текст размещается.
Для пробы сделали пару сайтов на Apostrophe. Сама CMS все еще довольно сыроватая, но если ее обработать напильником, получается довольно интересный продукт.
Идеально подходит для небольших сайтов, сайтов визиток.

31
Май

Конференция Symfony Camp UA 2010

Приглашаем всех желающих посетить конференцию по Symfony PHP Framework, которая состоится 3 июля 2010 года в г.Киев. Участие в конференции – бесплатное. Зарегистрироваться на мероприятие.

Конференция ориентирована как на профессиональных веб-разработчиков, так и начинающих. Мероприятие будет интересным местом для общения программистов и руководителей интернет-проектов, которые используют или планируют использовать фреймворк Symfony, где можно будет пообщаться, поделиться своим опытом, получить новые знакомства.

Планируемые доклады

• Перевод боевого сайта с ветки 1.0 на ветку 1.4

Руслан Ханов (Россия, Новосибирск)

• Как мы делали langwhich.com и unique-shopper.com?

Денис Пищенко, Дмитрий Одуло (Украина, Харьков)

• Symfony как платформа для open-source проектов (Sympal, Apostrophe, Diem)

Александр Демченко (Украина, Харьков)

• Многоязычные сайты на Symfony. Проблемы и их решения

Игорь Бровченко (Украина, Киев)

• Сontinuous Integration для Symfony

Игорь Бровченко (Украина, Киев)

• LESS, SASS, HAML: 4 буквы, изменившие frontend development

Константин Кудряшов (Белоруссия, Минск)

• Symfony Task – задачи батча (пакетной обработки). Как использовать, как улучшить

Александр Безрученко (Россия, Таганрог)

• Кастомизация генераторов в Symfony 1.3/1.4. Эффективное управление функционалом и структурой плагинов

Николай Зык (Украина, Киев)

• Философия сервисов. Практическое применение в Symfony 1.3/1.4

Николай Зык (Украина, Киев)

• Symfony 2 – перезагрузка?

Александр Демченко (Украина, Харьков)

• Этапы разработки реального проекта на Symfony 2 + Doctrine 2

Александр Скорней (Украина, Киев)

• Внедрение компонента templating в существующий проект

Станислав Сметанин (Россия, Ижевск)

Подробности и новости:

Сайт конференции: symfonycamp.org.ua

Twitter: @SymfonyCampUa

Если Вы находите возможным поддержать нашу конференцию, просим связаться с нами.

5
Май

Doctrine 1.2: сортировка связей

Чтобы связанные объекты выводились в определенном нами порядке, при описании модели можно указать поле по которому будет вестись сортировка.

Пример:

Image:
  columns:
    # .... необходимые поля
    pos: { type: integer, notnull: true, default: 0}  # поле по которому будет вестись сортировка
    product_id: {type: integer}

Product:
   # .... необходимые поля
  relations:
    Images:
      type: many
      class: Image
      local: id
      foreign: product_id
      onDelete: 'SET NULL'
      orderBy: 'pos ASC' # <- указываем по какому полю сортировать

Данная заметка касается версии Doctrine 1.2. Как я знаю в более старых версиях, подобное приходилось решать самостоятельно правкой классов в дистрибутиве Doctrine.

28
Апр

Яндекс.Директ API

Получен на днях доступ к API Яндекс.Директ, сейчас изучаем возможности. Есть большие задачи и планы по его использованию.
Сам доступ предоставляется через SOAP.