Максим Кузнецов

Максим Кузнецов

С нами с 01 июля 2013; Место в рейтинге пользователей: #33
21 мая 2016, 00:14
3
+4
Можно решить стандартным jevix'ом примерно так:

<?php
	if ($modx->event->name == 'OnDocFormSave') {
		$template = $resource->get('template');
		
		if ($template != 0) {
			$id = $resource->get('id');

			//В наборе параметров отключены неугодные теги аля script, iframe и прочие
			$jevixParams = $modx->getObject('modPropertySet',array('name'=>'Ticket'));
			$jevixOptions = $jevixParams->getProperties();

			//content
			if (strlen($content = $resource->getContent()) > 0) {
				$jevixOptions['input'] = $content;
				$content = $modx->runSnippet('jevix', $jevixOptions);
				$resource->setContent($content);
				
			}
			
			switch ($template) {
				//Шаблон с доп. тв, которое нужно обработать
				case 7:
					if (strlen($custom_tv = $resource->getTVValue('custom_tv')) > 0) {
						$jevixOptions['input'] = $custom_tv;
						$custom_tv = $modx->runSnippet('jevix', $jevixOptions);
						
						$resource->setTVValue('custom_tv', $custom_tv);
					}
					
				break;
				
			}
		}
	
		
		$resource->save();
	}
10 мая 2016, 13:36
+1
Попробуйте изменить событие на OnDocFormRender (для корректной отрисовки ошибки).

Урл для редиректа придется формировать самостоятельно:
$modx->sendRedirect($modx->getOption('site_url') . 'manager/?a=resource/update&id=' . $parent);

Как альтернатива — можно с минимальным расширением плагина повесить его помимо OnDocFormRender также и на OnBeforeDocFormSave (чтобы исключить возможность создания документа).
10 мая 2016, 04:43
+1
Примерно так:
<?php
	if ($modx->event->name == "OnDocFormPrerender" && $mode == "new") {
		if (!$modx->user->isMember('Administrator')) { 
			if ($parent = intval($_REQUEST['parent'])) {
				$disallow_parent_list = array(1, 2, 3);

				if (in_array($parent, $disallow_parent_list)) {
					$modx->event->output('Ресурс не может быть создан в данном разделе');
					//как вариант - можно после алерта редиректить пользователя
				}
			}
		}
	}
01 мая 2016, 21:41
1
+1
Как вариант — написать плагин примерно следующего содержания:
<?php
	if ($modx->event->name == "OnDocFormRender" && $mode == "new") {
		if ($parent = intval($_REQUEST['parent'])) {
		
			if (isset($modx->controller)) {
				switch ($parent) {
					case '1':
						$newTemplate = '10';
						break;
					//...
				}

				$modx->controller->setProperty('template', $newTemplate);
			}
		}
	}
01 мая 2016, 20:15
+3
Ну, если брать с «запасом» на побочные мелкие хотелки, которые не расписаны (+ расплывчатость в дизайне) — приблизительно от 35 до 70. Ценники Москвы в расчет не беру.
01 мая 2016, 19:45
+4
Что нет ни у кого опыта?
Ну просто классический вопрос, который не стоит задавать при отсутствии ответов..)

По факту, для получения ответа на ваш вопрос требуется конкретика, а именно:
— какой именно дизайн (пример сайта, макет, реализованная верстка)
— какая логика должна выполняться на странице возврата товара
— сколько (и каких) этажей в лендинге
Логотип
— логотип мм… что? Нарисовать?
— сроки выполнения

Ну и дополнительно, но не критично:
Настройка связи комплекта товара средствами миниШопа2 без плагинов в корзине
— из любопытства: из-за какой причины нельзя использовать плагины?

Наполнение магазина 10 товаров
— звучит как-то подозрительно, когда всего 10 товаров (не импорт или еще что-то) выделяют отдельным пунктом для программиста

UPD: Пункт про «дополнение» If лучше убрать. =)
22 апреля 2016, 17:55
+1
Хех, ну как уже описали последовательностью выше, таким способом вы подключите TinyMCE на форуму. Но тикетс ее не переварит.

Вам также потребуется отредактировать дефолтные скрипты Tickets, чтобы при нажатии на кнопку «добавить тикет/комментарий» содержимое визуального редактора отправлялось в родную textarea (до отправления на проверку). Что без проблем решается при помощи связки jQuery и родных методов TinyMCE.
21 апреля 2016, 21:52
1
0
Чистый запрос, пожалуй, будет более уместным из-за отсутствия лишней передаваемой информации.

TV — Возможные значения (подойдет для одиночного и множественного списка):
@EVAL return $modx->runSnippet('name');

Код сниппета:
<?php
	$q = $modx->newQuery('modResource');
	//пример ограничения выборки
	$q->where(array(
		"parent" => "16",
		"template" => "10"
	));
	$q->sortby('pagetitle','ASC');

	$q->select(array(
		"modResource.id",
		"modResource.pagetitle",
	));

	$s = $q->prepare();
	$s->execute();

	//если тип тв - одиночный список, то можно также дописать "заглушку" без реального значения:
	//$data[] = "Выберите категорию из списка==";
	while($row = $s->fetch(PDO::FETCH_ASSOC)){
		$data[] = "{$row['pagetitle']}=={$row['pagetitle']}";
	}

	$output = implode("||", $data);
	return $output;
20 апреля 2016, 10:19
0
Мм… тогда я не совсем понимаю, в чем ваша проблема:
При редактировании Тикетс в редакторе показываются html теги

при редактировании такого нет

К слову, на этом же сайте можно посмотреть, что html-теги проявляются и при создании и при редактировании тикетов/комментариев.

Возможно, в вашей форме редактирования отваливается MarkItUp из-за сторонней ошибки javascript'a?
20 апреля 2016, 09:42
0
Дело не в самом Tickets/ms2Forms, а в визуальном редакторе, который подключается по-умолчанию: MarkItUp.
Если вы хотите визуализировать html-теги, вам необходимо отключить MarkItUp и самостоятельно подключить тот визуальный редактор, который умеет это делать.
16 апреля 2016, 22:19
+2
Не переживайте, судя по последним тенденциям и количеству желающих разработать на нем проектов — MODX определенно становится популярнее. Просто не для всех.
12 апреля 2016, 17:18
+4
Добрый день.
Скайп Антона — inocoweb.
=)
12 апреля 2016, 09:16
0
На мой взгляд, эту задачу нужно и реализовывать «в другую сторону»:
— загружаем кучу изображений в «альбом» (ресурс)
— при нажатии на превьюшку открывать изображение в полноценном всплывающем окне
— подгружать в это окно (помимо самого изображения) комментарии TicketComments с уникальным &thread для данной картинки (не ресурса)
— расширить таблицу UserFiles, добавив в нее столбец для хранения рейтинга
— выводить рейтинг/кнопки для его изменения

Впрочем, можно попробовать реализовать и через ticketform + ufForm:
— создаете страницу «добавить фотографию»
— через TicketForm выводите в ней формы для заполнения полей ресурса (заголовок, описание)
— там же вызываете ufForm с параметром
&dropzone=`{"maxFiles":1}`
— навешиваете рейтинги/комментарии в шаблоне созданной страницы (как и для обычного ресурса)
11 апреля 2016, 10:31
0
UPD: не успел отредактировать — в передачу данных по «автору добавления / количеству изображений»:
'output' =>$modx->getChunk($tplUser, array(
	'count' => $data_value['info']['count'],
	'createdby' => $data_value['info']['createdby']
))
— нужно результат загнать в цикл по $data_value['info']['createdby'].
11 апреля 2016, 10:21
+1
Не за что..)

Если не трудно — отпишитесь потом, если реализация выйдет удобной. Я схожую задачу реализовал через (не рекламы ради) связку Tickets + UserFiles и плагин на OnDocFormSave, который при выполнении условий перепривязывал загруженные изображения на свежесозданный документ.

А ms2guploader все никак не доберусь протестировать + интересует, дружит ли он с облачной загрузкой.
11 апреля 2016, 10:12
+3
Да, почему нет.

Нужно:

1. В выборку
$q->select('`msResourceFile`.`createdon`, `msResourceFile`.`id`, `msResourceFile`.`resource_id`, `modDocument`.`pagetitle`');

добавить автора изображения:
,`modDocument`.`createdby`

2. Счетчик и передаваемую информацию персонализировать для каждого автора, т.е. строка:
${'count_' . $day . '_' . $item['resource_id']}++;

$data = array(
	'pagetitle' => $item['pagetitle'],
	'count' => ${'count_' . $day . '_' . $item['resource_id']}
);

заменится на:
${'count_' . $day . '_' . $item['resource_id'] . '_' . $item['createdby']}++;

$data = array(
	'pagetitle' => $item['pagetitle'],
	'info' => array(
		'count' => ${'count_' . $day . '_' . $item['resource_id'] . '_' . $item['createdby']},
		'createdby' => $item['createdby']
	)
);

3. В цикл передачи данных в чанк:
foreach ($data as $data_key => $data_value) {
	$output .= $modx->getChunk($tplRow, array(
		'id' => $data_key,
		'pagetitle' => $data_value['pagetitle'],
		'count' => $data_value['count']
	));
}

Нужно передавать айди, заголовок и связку информации об авторе и количестве добавленных им изображений:
foreach ($data as $data_key => $data_value) {
	$output .= $modx->getChunk($tplRow, array(
		'id' => $data_key,
		'pagetitle' => $data_value['pagetitle'],
		'output' =>$modx->getChunk($tplUser, array(
			'count' => $data_value['info']['count'],
			'createdby' => $data_value['info']['createdby']
		))
	));
}
— соответственно, появится новый чанк &tplUser. Вот пример его содержания:
[[+count]] изображений от [[+createdby:userinfo=`fullname`]]

А чанк &tplRow изменится на такой:
<li>
	В альбом<b>[[+pagetitle]]</b> добавлены: [[+output]]
</li>

Вроде ничего не забыл..)
02 апреля 2016, 17:07
1
0
Конкретно TicketForm подключают следующие скрипты:

/assets/components/tickets/js/web/default.js
/assets/components/tickets/js/web/lib/plupload/plupload.full.min.js
/assets/components/tickets/js/web/files.js
+ формируют массив TicketsConfig.
+ (опционально) скрипты редактора MarkitUp.

Вы можете попробовать подгружать их самостоятельно и запускать их внутренние элементы инициализации через $(document).ajaxStop. Плюс формировать конфигурационный массив самостоятельно.

UPD: Но я вас заверяю — без глубоких знаний php+js оно того вообще не стоит и грозит очень серьезно переписать исходный сниппет.
02 апреля 2016, 11:11
+1
Это потому что TicketForm при инициализации подключает свои скрипты на страницу.
В случае же с аякс-загрузкой их подключение не происходит.