Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2 3

Обсуждения разработчиков

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
и так я начал делать пакетное удаление/перемещение/поднятие и т.д. В чем сама идея? Мы выделяем чекбоксами(на примере ПМ) сообщения и клацаем "удалить". Удаляются все отмеченные сообщения. Но по скольку я не силен в JavaScript решил вынести на обсуждение работу этих самых чекбоксов и всей этой конструкции в целом. Надеюсь вы поможете усовершенствовать код. Добавить так сказать защиту от дурака и все такое.

И так вид чекбокса
Code:
<input type="checkbox" onClick="if(this.checked){addToPackage(this.value);}else{delFromPackage(this.value);}" value="{ENTITY_ID}">

скрипты
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function addToPackage(id) {
        packIds.push(id);
}
function delFromPackage(id) {
        for(key in packIds) {
                if(packIds[key] == id) {
                        packIds.splice(key, 1);
                }
        }
}
function sendPack(action) {
        var pack = document.getElementById('actionPack');
        pack.action = action;
        for(key in packIds) {
                pack.innerHTML += '<input type="hidden" name="ids[]" value="' + packIds[key] + '">';
        }
        pack.submit();
}

Добавлено2011.06.24 13-47

ну и само собой есть кнопка вызывающая sendPack()

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#2
Drunya, альтернативный вариант:
1) генерируем чекбоксы с id/name вида "del_01", "del_02" и т.д. до "del_NN";
2) в php-скрипте запускаем цикл по полученным значениям до NN и установлен чекбокс или нет;
3) производим удаление.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#3
Wasja, сорри, а можешь немного разжевать. Я как бы суть понял, но хочу разобрать в чем ты тут видишь преимущество и вообще почему именно так?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#4
Drunya, исключаем все потенциальные проблемы с ява-скриптом.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
В принцыпе твоя правда. Но возьмем пример с постами форума. На каждом чекбокс для выделения. Выходит что бы отправить эти чекбоксы, надо брать всю страницу в форму:)

Добавлено2011.06.24 15-48

не то что бы это не возможно, но это как то не по человечески.

Добавлено2011.07.03 22-50

И так, следующая цель это сделать условные операторы в шаблонах. Вот код функции что я придумал

 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 
<?php function parseAddOperations($data) {
    
$params = array(
        
'IS_USER_REGISTERED' => true,
        
'IS_USER_ACTIVE' => 'test',
    );
    
extract($params);

    if (
preg_match_all('#\{if\(([\w\s_\-="\']+)\)\}(.*)(\{else\}(.*))?\{endif\}#isU'$data$matches)) {
        if (
count($matches[1]) > 0) {
            foreach (
$matches[1] as $key => $row) {
                
                
$comstr preg_replace('#[\(=\s]*([A-Z_]+?)[\)=\s]*#uU''$\\1'$row);
                
$comstr '$b = (boolean)(' $comstr ');';
                eval(
$comstr);
                
                if (
$b === true) {
                    
$data str_replace($matches[0][$key], $matches[2][$key], $data);
                } else {
                    
$data str_replace($matches[0][$key], $matches[4][$key], $data);
                }
                
                

                
//pr($matches);
            
}
        }
    }
    return 
$data;
}
?>


А вот как метки выглядят в шаблоне
Code:
<html>
<head>

</head>
<body>
{if(IS_USER_REGISTERED)} YES {else} NO {endif}
{if(IS_USER_ACTIVE === 'test')} YES {else} NO {endif}
</body>
</html>

Есть мысли на этот счет?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#6
Drunya, это
Code:
{if(IS_USER_ACTIVE === 'test')} YES {else} NO {endif}
не по-людски (я про три знака равно). :)

Кроме того, в этом варианте не сработают вложенные условия.

А вообще нужно определиться с тем, что ты хочешь добиться условными кодами. Если по аналогии с укозом - необходимо поддерживать 2 варианта логических условий - проверка на существование переменной (без условий) и проверка на результат логической операции (с возможностью выполнения арифметических действий). Так же неплохо добавить проверку ifnot.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#7
Wasja пишет:
не по-людски (я про три знака равно).
Как раз это очень по людски. Можно ставить и два равно. В таком случае не будут кчитываться типы переменных. 3 равно - сравнение еще и по типу. А одно равно - это присваивание а не сравнение.

Вложенность добавлю. Я так и собирался сделать.

арефметика работать и так должна. Так как условия обрабатываются eval-ом. Нельзя юзать только функции, в целях безопасности.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Obmer

  • Свой человек
  • Юзер
  • 129
  • Репутация:5 
  • Предупреждения: 0 
  • Регистрация:
    1 Июн 2010
#8
Пацики, надо решить какие переменные мы хотим видеть в условных операторах для шаблонизатора Фапос, например
IS_USER_REFISTERED
USER_NAME
и т.д.

Это надо Дрюне, что бы закончить условные операторы

Бывает настолько сложно, что проще некуда

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#9
Я думаю так

USER_LOGGED_IN - авторизован ли пользователь
И большинство переменных доступных по {ПЕРЕМЕННАЯ}

Добавлено2011.07.05 12-28

Так же думаю стоит начать напоминать всем что в новой версии не будет чанков. Вместо них будут использоваться сниппеты, так как в них можно юзать как статику, так и динамику.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#10
Drunya пишет:
Вместо них будут использоваться сниппеты, так как в них можно юзать как статику, так и динамику.
А защита от рекурсии предусмотрена? :)

1 2 3
Сейчас online: 184. Зарегистрированных: 1. Гостей: 183.