Блог О пользователеbethrezen

Регистрация

Pais porrada de Bethrezen

Календарь

<< Июнь 2009  

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

На странице

Sveta: Сашка?
Alukard: Нет, это уже не Сашка...
Alukard: Это Bethrezen..
Alukard: А это не лечится....

  • ENG: I've addapted a JavaScript serialize function by Kevin van Zonneveld to jQuery. Function works like the same named function in PHP. Be free to use it in your projects. It is especially needed when you want to post Object in AJAX (in jQuery "$.ajax()").
    RUS: Я адаптировал JavaScript serialize функцию, написанную Kevin van Zonneveld, для использования с jQuery. Serialize работает также как и одноименная функция в PHP. Она хорошо выручит Вас, если Вы захотите передать в AJAX запросе Объект (JavaScript object).

    Example of using: $.serialize({data: 'value'});

    Source code:

    jQuery.extend({
    serialize: function( mixed_value ) {
    // http://kevin.vanzonneveld.net
    // + original by: Arpad Ray (mailto:arpad@php.net)
    // + improved by: Dino
    // + bugfixed by: Andrej Pavlovic
    // + bugfixed by: Garagoth
    // + input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // + bugfixed by: Russell Walker
    // % note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // % note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // * example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'

    var _getType = function( inp ) {
    var type = typeof inp, match;
    var key;
    if (type == 'object' && !inp) {
    return 'null';
    }
    if (type == "object") {
    if (!inp.constructor) {
    return 'object';
    }
    var cons = inp.constructor.toString();
    match = cons.match(/(\w+)\(/);
    if (match) {
    cons = match[1].toLowerCase();
    }
    var types = ["boolean", "number", "string", "array"];
    for (key in types) {
    if (cons == types[key]) {
    type = types[key];
    break;
    }
    }
    }
    return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';

    switch (type) {
    case "function":
    val = "";
    break;
    case "undefined":
    val = "N";
    break;
    case "boolean":
    val = "b:" + (mixed_value ? "1" : "0");
    break;
    case "number":
    val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
    break;
    case "string":
    val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
    break;
    case "array":
    case "object":
    val = "a";
    /*
    if (type == "object") {
    var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
    if (objname == undefined) {
    return;
    }
    objname[1] = serialize(objname[1]);
    val = "O" + objname[1].substring(1, objname[1].length - 1);
    }
    */
    var count = 0;
    var vals = "";
    var okey;
    var key;
    for (key in mixed_value) {
    ktype = _getType(mixed_value[key]);
    if (ktype == "function") {
    continue;
    }

    okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
    vals += $.serialize(okey) +
    $.serialize(mixed_value[key]);
    count++;
    }
    val += ":" + count + ":{" + vals + "}";
    break;
    }
    if (type != "object" && type != "array") {
    val += ";";
    }
    return val;
    }
    });


    NJoy

  • Пишу одно прлиожение на Yii Framework. Структура приложения такова, что необходимо разграничить экшены контроллеров(CController) по папкам и сделать их типовыми.
    Экшены разграничиваются легко.
    Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
    Рассмотрим на примере изменения титла страницы.
    Вот код моего базового экшена:
    [code]
    class dotPlantAdminAction extends CAction
    {
         /**
          * Constructor.
          * Runs CAction constructor and makes some changes for Admin action type
          */
         public function  __construct($controller,$id)
         {
         parent::__construct($controller,$id);
             $this- >controller- >pageTitle       = dotPlant::getName() . " - Admin ";
            
         }    
         
         public function run()
         {
           
         }
    }



    В конструкторе мы сначала вызываем parent::__construct с необходимыми параметрами. Это грубо-говоря идёт инициализация базового CAction.

    Допустим у нас есть контроллер SettingsController. И нам нужно сделать его на основе нашего экшена. Создаем папку  protected/controllers/Settings/. В ней создаем файл ActionAdmin.php с таким вот кодом:
    [code]
    class ActionAdmin extends dotPlantAdminAction

    {

        public function run()

        {

        $this- >controller- >render('admin');    

        }

    }



    Видите? Нам достаточно только объявить run() и уже всё готово. При загрузке запустится необходимый нам конструктор базового контроллера с нашими действиями.

    Вот по такому принципу я разграничиваю например админку в своей CMS dotPlant на Yii Framework. Слава PHP пятому!

  • 25 января 2009 | 07:47 DailySnap: DropDown jQuery Navigation Menu 

    dailysnap, dropdown, jquery, menu, navigation, yii framework, меню навигации на CSS

    Выпадающее меню навигации v0.1.
    Простенькое выпадающее меню на jQuery. Использует модуль категорий для динамической генерации HTML разметки на UL-ах. Реализовано как CWidget.
    Использовалось: jQuery, CSS, The Gimp для фона и картинок, Yii Framework

  • 25 января 2009 | 05:06 Счастье - это просто :) 

    Я заметил за собой особеность.Когда я пишу код, я смотрю работает отдельный блок или нет, потом дописываю. И вот когда я уже вроде бы всё дописал и оно должно работать, я ставлю на просмотр, а сам ухожу курить. Прихожу, все работает и я счастлив O:-)

  • 21 января 2009 | 04:30 DailySnap - Категории 

    Вот решил сделать новую рубрику DailySnap. Буду выкладывать скриншоты дня.

    Первый скриншот:

    категории, jQuery UI, treeTable, Yii Framework

    Админка категорий v0.1.
    Ну чем вам не скиновое GUI приложение?
    jQuery UI, treeTable, Yii Framework




  • 19 января 2009 | 08:23 Overdrive 

    Ничто так не помогает отдохнуть от работы, как гитара с овердрайвом (rock)

    Теги: guitar работа

  • Судьба... это понятие требует существенного рефакторинга в сознании социума (:

    Теги: бред мысль

  • 14 января 2009 | 00:51 Чувствуется... 

    "mellophrenia чувствует все и сразу. Как неразделенная любовь, как незаканчивающаяся месть" (c)


    Как же хорошо сказала... Ведь действительно такое ощущение частенько появляется.. само по себе.. Что... Зачем.. Почему...

  • 11 января 2009 | 01:59 О блогах и сайтах 


    С BestPersons.

    ozhigin, 10.01.2009 в 21:58 #

    О 2 МЕСТО) МОЛОДЕЦ






    avatar


    bethrezen, 11.01.2009 в 00:16 #

    иногда я бываю и первым)) хотя мне как то пофиг, если честно








    avatar


    ozhigin, 11.01.2009 в 09:33 #

    когда первый ещё бы)))








    avatar


    bethrezen, 11.01.2009 в 09:54 #

    это прибавляет лишь несколько читателей на BP, но только 1% из них превращается в реальных читателей. да и пишу я откровенное гавно, понятное или линуксоидам или шизоидам.






    Да, у меня бывает плохое настроение. Но вот я начал работу ещё над сайтом Yii Framework - Russia.


  • Вот сегодня проснулся утром, захожу на BestPersons.ru, а там меня ждала приятная новость:
    Bethrezen | BestPersons TOP

    Мне, конечно, откровенно пофиг на второе место... Ничего особенного оно мне не даёт. Но всё таки - приятно.

    Тут вот многие подводят итоге уходящего года... Но кому мои какие-то достижения или обиды будут интересны?

    Так что я просто ПОЗДРАВЛЯЮ ВСЕХ С НАСТУПАЮЩЕМ НОВЫМ ГОДОМ.


    И пусть у тебя, мой уважаемый читатель, будет всё ништяково, но без неблагоприятных последствий.

    Бисяффо