Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #25
Отправить деньги
Володя
25 апреля 2015, 15:22
3
+1
сделай так
<?php
switch ($modx->event->name) {

	case 'OnDocFormPrerender':

        if ($mode !== 'upd' || empty($id)) {return '';}
        if (!$modx->getObject('msProduct', $id) && !$modx->getObject('msCategory', $id)) {return '';}

        $modx->controller->addHtml('
		<script type="text/javascript">
			Ext.onReady(function() {
				var buttons = Ext.getCmp("modx-action-buttons");
				if (!buttons) {return;}
                    		for (i in buttons.items.items) {
                        		var button = buttons.items.items[i];
                        		if ("button" !== button.xtype) {continue;}
                        		if ("update" == button.process || "resource/update" == button.process) {
                            			button.enable();
                        		}
                    		}
			});
		</script>');

	break;

}
Василий Наумкин
10 апреля 2015, 07:42
1
0
Очень рад, что кто-то вспомнил про замечательный fullCalendar.

Я тоже делал что-то подобное давно, но потом забросил.
Виктор
09 апреля 2015, 23:05
3
+2
Хотел писать js галерею, но что-то вдохновения нет;(
Так что держите немного моего гавнокода(т.к. я не искушен PHP), вдруг пригодится:
<?php
/* 
N - Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0)
от 1 (понедельник) до 7 (воскресенье)
***
G -	Часы в 24-часовом формате от 0 до 23
*/

        
$weekDay = date("N"); /* Текущий день недели на сервере */
$day = date("j"); /* Текущий день на сервере */
$hour = date("G"); /* Текущий час на сервере */




if (in_array($hour, explode(",", $ghours)) || !isset($ghours) ){ /* Проверка на соответсвие часа*/
    switch($gtype) {
        case "evenDays": // Четные дни
            if( $day%2 == 0 ) {
                return $info;
            }
            break;
            
        case "oddDays": // Нечетные дни
            if( $day%2 > 0 ) {
                return $info;
            }
            break;
            
        case "onDays": // Рабочие дни
            if( $weekDay != 7 || $weekDay != 6 ) {
                return $info;
            }
            break;
            
        case "offDays": // Выходные дни
            if( $weekDay == 7 || $weekDay == 6 ) {
                return $info;
            }
            break;
            
        case "weekDays": // Дни недели
            if (in_array($weekDay, explode(",", $gweekDays))){ /* Проверка на соответсвие дня */
                return $info;
            }
            break;
            
        case "always": // Выходные дни
            return $info;
            break;
        
        default:
            if (in_array($day, explode(",", $gdays))){ /* Проверка на соответсвие дня */
                return $info;
            }
        break;
    }
}
Вызовы:
[[!OutputTime? 
&gdays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни`
]]
[[!OutputTime? 
&gtype=`weekDays`
&gweekDays=`1,2,3,4,5`
&info=`выводим в указанные дни недели (пн-пт)`
]]
[[!OutputTime? 
&gtype=`weekDays`
&gweekDays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни недели (пн-пт) с 8 до 16`
]]
[[!OutputTime? 
&gtype=`always`
&info=`выводим каждый день`
]]
[[!OutputTime? 
&gtype=`always`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим каждый день в указанное время`
]]
[[!OutputTime? 
&gtype=`evenDays`
&info=`выводим по четным дням`
]]
[[!OutputTime? 
&gtype=`evenDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по четным дням в указанное время`
]]
[[!OutputTime? 
&gtype=`oddDays`
&info=`выводим по нечетным дням`
]]
[[!OutputTime? 
&gtype=`oddDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по нечетным дням в указанное время`
]]
[[!OutputTime? 
&gtype=`onDays`
&info=`выводим в рабочие дни`
]]
[[!OutputTime? 
&gtype=`onDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в рабочие дни в указанное время`
]]
[[!OutputTime? 
&gtype=`offDays`
&info=`выводим в выходные`
]]
[[!OutputTime? 
&gtype=`offDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в выходные в указанное время`
]]
Вроде бы все потестил, но возможны ошибки)
Виталий Киреев
08 апреля 2015, 17:59
1
+3
Из
$link="instagram.com/12345/"
получить 12345 хватило бы
$v=explode('/',$link); return isset($v[1]) ? $v[1] : '';
Василий Столейков
02 апреля 2015, 14:51
1
-1
time2post.ru/ — делал кросспостинг в соц-группы с помощью этого сервиса, решил пойти по лёгкому пути… ))
Илья Уткин
31 марта 2015, 16:20
3
+2
&sortby=`{"Data.price":"ASC","Data.popular":"DESC"}`
так не подходит?
Виталий Серый
30 марта 2015, 16:06
1
0
Я немного другим путем пошел. Немного модифицировал сниппет getTickets, обозвал его чуть иначе.
После 164 строки добавил следующий код:
if (!empty($getFiles)) {
    $data['files'] = $content = '';
    $k = $row['file.0.url'] = 0;
    if (!empty($unusedFiles) && !empty($row['content'])) {
        $content = $row['content'];
    }
    
    $where = array('deleted' => 0, 'class' => 'Ticket', 'parent' => $row['id'], 'type' => 'image');
    $q = $this->xpdo->newQuery('TicketFile', $where);
    $q->select('url');
    $q->sortby('rank ASC, createdon', 'ASC');
    if ($q->prepare() && $q->stmt->execute()) {
        $imgs = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
        foreach ($imgs as $k => $img) {
            if ($content && strpos($content, $img) !== false || $k != 0) {
                continue;
            }
            $row['file.'.$k.'.url'] = $img;
            $k++;
        }
    }
    $row['has_files'] = !empty($row['file.0.url']);
}
Включается с &getFiles=`1`. Первое изображение в плейсхолдере [[+file.0.url]].

Так же сам Tickets модифицированный (добавлена возможность сортировки), т.ч. если не запустится надо стереть «rank ASC, „
Андрей
21 марта 2015, 16:31
8
+1
Ну вот как-то так набросал на скорую руку. -)

Создал плагин, повесил на событие OnDocFormSave.

<?php
if ($modx->event->name == 'OnDocFormSave') {

	$parentIds = $modx->getParentIds($id, 4, array('context' => 'web'));   // Получаем id всех родителей ресурса
	$res = $modx->getObject('modResource',$id);
	$curAlias = $res->get('alias');   // Алиас текущего ресурса

	$cnt = count($parentIds);  // Количество родителей

	if($cnt > 2) { 

		$aliases = array();   // Массив для всех найденных алиасов

		foreach($parentIds as $v) {
			if($v == 22 || $v == 0) continue;  // Если родитель - контейнер Shop(22) или главный родитель (0) - пропускаем.

			$obj = $modx->getObject('modResource', $v);
			$alias = $obj->get('alias');
			$aliases[] = $alias;
		}

		$resource->set('uri', implode('/',array_reverse($aliases)) . '/' . $curAlias);

	} else {
		$resource->set('uri', $curAlias);
	}

	$resource->set('uri_override', true);
        $resource->save();

}
Можно еще добавить условие, чтобы урл, таким образом, формировался только для новых ресурсов. Мне пока не нужно.

if ($mode == 'new') {
    // код выше
}
Андрей Сухомозгий
17 марта 2015, 12:59
2
0
по шагам писать не буду. обычная работа с куками…
на одном сайте делал так:
Подключал библиотеку.
Вешал событие на клик по кнопке закрытия блока.
Когда пользователь кликает — в куки уходит запись и в течение 2 дней (или пока не почистит куки) пользователь не видит этого блока.
Мне этого было достаточно…
$(document).ready(function() {
        $('.alert-dismissable').each(function(index){
            if ($.cookie($(this).attr('class').split(/\s+/)[3])) {
                $(this).css('display','none');
              }
        });
        $('.close').click(function(){
            $.cookie($(this).parent().attr('class').split(/\s+/)[3], true, {  
                expires: 2,
                path: '/'
          }); 
        });
    })
Василий Наумкин
17 марта 2015, 10:11
2
0
Нужно немного подумать, как вообще работает gravatar.

Как только ты вспомнишь, что ему нужен хэш от email юзера, сразу станет ясно, что делать:
[[!TicketLatest?
	&tpl=`@INLINE <img src="https://gravatar.com/avatar/{{+email:strtolower:md5}}?s=50" />`
]]