Алексей Федоров

Алексей Федоров

С нами с 19 октября 2015; Место в рейтинге пользователей: #186
Алексей Федоров
16 ноября 2015, 00:09
0
все что там есть, это и есть большой пример
Вот подсказок я там вообще не видел, потому и спросил. По факту это элементарнейший сайт — меню и лист контента из которого автоматом собирается оглавление (плагин Василий выкладывал где-то здесь, очень полезная вещь). Возникает вопрос: может у нас как-то по разному это отображается?
Алексей Федоров
15 ноября 2015, 19:16
0
Я немного не понял, что именно приводится в пример на docs.modx.pro. если речь идет о какой-то подсказке которая едина для некой группы товаров, то я бы создал соответствующее tv, которое бы потом вставлял в карточку. Прошу учесть, что у меня знания php нет, поэтому в направлении готовых решений этим способом ничего стопроцентно верного предложить не могу, но логично было бы создать плагин, который будет проводить проверку соответствия слов из конкретного поля при добавлении товара с неким словарем (отдельный документ с возможностью редактирования и пополнения) и уже затем, добавлял к нему tooltip нужный. Так бы я сделал, если бы все таки владел php =)

Если более ламерский вариант — создаем дополнительную кнопку в TinyMCE (или каким редактором будут пользоваться при добавлении товара?). Кнопка выводит поле текст которого потом будет нашим всплывающим сообщением, а само слово оборачивает в нужные нам теги. аналогично работают кнопки «вставить гиперссылку» или там «добавить изображение», можно поковыряться в редакторе и прилепить туда свою кнопочку, но это, конечно потребует каждый раз вводить сообщение вручную, что не очень-то гуд.

Вообще, тут надо бы более конкретный пример о чем вообще идет речь, потому что я мог вообще неправильно понять как поставлена задача.
Алексей Федоров
14 ноября 2015, 11:35
0
Какой
этот скрипт
? Вариант доставки в miniShop2 выводится с id=«delivery_n» по порядку добавления в способы доставки магазина. Например, если Самовывоз есть изначально, а добавили мы только параметр «Доставка», то их у нас будет целых 2.
//Так выглядит конечный результат и от этого будем отталкиваться
<label class="delivery input-parent">
<input type="radio" name="delivery" value="1" id="delivery_1" data-payments="["1","2"]" checked="">
Самовывоз
		<p><small>Товар придет на склад юла-юла-бла</small></p>
	</label>
<label class="delivery input-parent">
<input type="radio" name="delivery" value="2" id="delivery_2" data-payments="["1","2"]" >
Доставка
		<p><small>Привезем под дверь и будет вам счастье!</small></p>
	</label>
Вывод полей корзины стандартно осуществляется чанком tpl.msOrder.outer Советую скопировать и при вызове сниппета msOrder указать новый шаблон вывода (пусть назовем tpl.msOrder.outer2)
Блок вывода адреса начинается со строки 50
<div class="span6 col-md-6">
В нем дописываем id=«adres» и получается (на всякий случай привожу весь блок адреса, мало ли какой у вас уровень знаний html =D)
<div id="adres" class="span6 col-md-6">
			<h4>[[%ms2_frontend_address]]:</h4>
			<div class="form-group input-parent">
				<label class="col-sm-4 control-label" for="index"><span class="required-star">*</span> [[%ms2_frontend_index]]</label>
				<div class="col-sm-4">
					<input type="text" id="index" placeholder="[[%ms2_frontend_index]]"  name="index" value="[[+index]]" class="form-control [[+errors.index]]">
				</div>
			</div>
			<div class="form-group input-parent">
				<label class="col-sm-4 control-label"  for="region"><span class="required-star">*</span> [[%ms2_frontend_region]]</label>
				<div class="col-sm-6">
					<input type="text" id="region" placeholder="[[%ms2_frontend_region]]" name="region" value="[[+region]]" class="form-control [[+errors.region]]">
				</div>
			</div>
			<div class="form-group input-parent">
				<label class="col-sm-4 control-label"  for="city"><span class="required-star">*</span> [[%ms2_frontend_city]]</label>
				<div class="col-sm-6">
					<input type="text" id="city" placeholder="[[%ms2_frontend_city]]" name="city" value="[[+city]]" class="form-control [[+errors.city]]">
				</div>
			</div>
			<div class="form-group input-parent">
				<label class="col-sm-4 control-label"  for="street"><span class="required-star">*</span> [[%ms2_frontend_street]]</label>
				<div class="col-md-6">
					<div class="col-md-4">
						<input type="text" id="street" placeholder="[[%ms2_frontend_street]]" name="street" value="[[+street]]" class="form-control [[+errors.street]]">
					</div>
					<div class="col-md-4">
						<input type="text" id="building" placeholder="[[%ms2_frontend_building]]" name="building" value="[[+building]]" class="form-control [[+errors.building]]">
					</div>
					<div class="col-md-4">
						<input type="text" id="room" placeholder="[[%ms2_frontend_room]]" name="room" value="[[+room]]" class="form-control [[+errors.room]]">
					</div>
				</div>
			</div>
		</div>
Дальше все завит от того, как работает скрипт. Если это обычный js, то он должен по выбору id радиокнопки, показывать/скрывать
В сети порылся и нашел такой код (привожу переделанным под наш случай), его нужно вставить в конце нашего чанка
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script type="text/javascript">
$(function() {
    $('input[name=delivery]').on('click init-delivery', function() {
        $('#adres').toggle($('#delivery_2').prop('checked'));
    }).trigger('init-delivery');
});
</script>
По нормальному, этот скрипт нужно подключать в шаблоне корзины, а не в чанке, но если захочется вернуться к предыдущей версии вывода, то в шаблоне будет висеть лишний скрипт, так что… ну, это уже ерунда, которая мало относится к делу. Логично предположить, что с новой версией jQquery скрипт будет работать так же хорошо, но я оставил тот, что был в примере (я со скриптовыми языками не дружу, поэтому могу ошибаться, надеюсь в комментариях ниже уточнят этот вопрос). У меня все работает на ура. Если нужно затачивать под неизвестный
этот скрипт
, то ничего не могу сказать ибо ссылки нет.
Алексей Федоров
13 ноября 2015, 17:50
0
Ясно, спасибо. Похоже, пора начинать учить php и modxApi.
Алексей Федоров
13 ноября 2015, 14:00
0
Соответственно, берем ссылку на любой открытый файл, перебираем id и получаем все файлы и открытые и закрытые.
Понятия не имел о такой хитрости))
сделаю форк FileAttach и доработаю для себя.
То есть это будет таки отдельное дополнение + сниппет или под одной оберткой две конфетки?
Алексей Федоров
13 ноября 2015, 11:55
+1
П.С. Когда сделаю, выложу. Мне не жалко.
Холопы челом бьют, взирая на мудрость и щедрость твою =)
Алексей Федоров
13 ноября 2015, 11:34
0
А не затруднит показать «сниппет в несколько строчек» для любого из этих решений. Лично для меня удобнее последний, поскольку в этом случае, можно в ЛК вывести сниппет, который будет показывать «секретную ссылку», генерируемую FileAttach только тем, кто входит в конкретную группу. А вот как пользователя добавить в группу «Покупатель товара N» — уже не знаю( Знаний php нет вообще((

Но в действительности подойдет любое решение, даже не универсальное. TV так TV. Свойство товара? Как скажете. Выложите в «Готовые решения», пожалуйста.
Алексей Федоров
13 ноября 2015, 07:55
+4
Одно время работал со скриптом, который использовал Semantic Ui в качестве основы и сетку Bootstrap. Все красиво, все круто, действительно многие вещи настраиваются, но их банально слишком много. К примеру, разноцветность кнопочек по своему прикольная фича, но кому нужны *дцать цветов для кнопок? Мне в самых запущенных случаях требовалось 5 разных кнопок. И это касается практически всего. Та же анимация очень разная, но по факту не всегда ее столько нужно. Достаточно пары разновидностей, это если вообще нужна =)

И потом когда вот так набираешь функционал, в итоге получается огромный файл, который нужно резать вручную, ибо кастомизатора нет. Вот тут и получается сложность — трата лишнего времени на оптимизацию файлов. Если есть опыт такой работы- — хорошо, нет — придется сидеть и разбираться, что? зачем? для чего? Не у всех есть базовые даже базовые знания CSS, а когда дело касается скриптов все становится еще веселее. А ведь грузить n *.js файлов, в каждом из которых прописаны «плюшки» для не используемых элементов — не самая разумная вещь с точки зрения производительности. Можно, конечно, отдавать пользователю при загрузке страницы пак скриптов и стилей в 1,5-2 мб, но это как-то не айс. Минимизация там не сильно поможет.

(Врио КЭПа — Алексей)
Алексей Федоров
07 ноября 2015, 17:41
0
Кошмар! Я даже не подумал об этом =)
Таки да, это решает, но тогда это больше чат напоминает (( Так что, придется самому прикручивать js скрипт цитирования на уже неродную для компонента кнопку Ответить. И ждать, когда в Tickets появится &tree='0'
Спасибо за открытие мне глаз =) Сильно помог ответ. Теперь хоть ясно куда копать при отсутствии знаний php.
Алексей Федоров
07 ноября 2015, 14:13
0
Не древовидные ответы — в TicketComments параметр &depth=`1`
Увы, нет(( это дает нам дерево с одним уровнем вложения. При простановке 0 включается неограниченное ветвление. Буквально недавно Василий ответил, что этот функционал еще не реализован. Насколько понимаю, Konstantin сейчас бьется над реализацией именно форума на основе тикетс. То есть получается, что все по очереди изобретают свои велосипеды =) Вообще жду с нетерпением гайда по созданию форума из разряда how to. Office — шикарный ЛК. ЛС можно реализовать через SocialTools, жаль что так и не прикручена строка с автоподстановкой, но это и не самое главное в форуме.

Как надумаешь делать, учитывай, пожалуйста нубов вроде меня)
Алексей Федоров
07 ноября 2015, 13:52
0
Надеюсь, время однажды появится =) ОЧЕНЬ интересно как это сделано. Мне, например, хватает фантазии, чтобы представить как Тикеты превращаются в форум. Функционал-то по сути весь имеется. К сожалению, не хватает конкретных знаний. С modx только начал разбираться и многое пока неясно. С фронтендом все еще более-менее понятно. Меняем чанки тикета и комментария (по сути они одинаковые должны быть, насколько понимаю). А вот как реализовать не древовидные ответы уже вопрос интересный. Ну и т.д.

Короче, с нетерпением ожидаю и готов поспорить, что таких ожидающих тьма-тьмущая.
Алексей Федоров
28 октября 2015, 14:29
0
Добавил с еще одной просьбой касательно компонента. Тут продублирую.

Это не слишком критично, но очень хочется вывод в админку поля с указанием username пользователя, который отправил сообщение об ошибке.
Алексей Федоров
26 октября 2015, 12:21
0
Классный компонент, но не учитывает пользователей мобильных устройств — на смартфонах и планшетах Ctrl+Enter не сильно понажимаешь.

Если возможно, хотелось бы увидеть подсказку при выделенном тексте «Сообщить об ошибке» и вызывать модальное окно по клику мышки на сообщение. Чтобы облегчить процесс приведу найденный в сети код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Главная</title>
<!-- Стили можно вынести в отдельный файл -->
<style type="text/css">
body{
margin:0; padding:0;
}
 
#orpho-quote {
    position:absolute; 
    display:none;  
    background:#fff;
    cursor: pointer;
    border:3px solid #ccc;
    color: #333;
    font: bold 14px arial;
    padding:5px 15px;
}
 
#orpho-quote:hover{
    background:#ffdb88;
}
 
.content {
    position:relative; 
    margin:10px auto; 
    height:auto; 
    width:900px;
    border:1px solid #ccc; 
    padding:10px;
}
 
.twrap{
    position:relative; 
    width:920px;
    margin:10px auto; 
    height:auto; 
}
 
#replytext{
    position:relative; 
    width:600px;
    margin:0;
    height:150px; 
}
</style>
<!-- End Stylesheets -->
</head>
<body>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque quis dui a lectus porttitor laoreet ut ac arcu. Etiam ut quam odio. Sed lobortis dapibus libero hendrerit blandit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam sed libero quam, quis condimentum dolor. Aliquam erat volutpat. Aliquam quis lacinia erat. Nam faucibus malesuada erat. Aliquam at diam mollis dui fermentum placerat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
 

</div>
<div class="twrap"><textarea id="replytext"></textarea></div>
<div id="orpho-quote">Сообщить об ошибке</div>
</body>
<!-- Begin JavaScript -->
// Сам скрипт выводит процитированный текст в блок ниже, но можно адаптировать под OrphoMan
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
jQuery(function($) {
 
    var $txt = '';
     
    $('.content').bind("mouseup", function(e){
        if (window.getSelection){
            $txt = window.getSelection();
        }
        else if (document.getSelection){
            $txt = document.getSelection();
        }
        else if (document.selection){
            $txt = document.selection.createRange().text;
        }
        else return;
        if    ($txt!=''){
            $('#orpho-quote').css({'display':'block', 'left':e.pageX-60+'px', 'top':e.pageY+5+'px'});
        }
    });
     
    $(document).bind("mousedown", function(){
        $('#orpho-quote').css({'display':'none'});
    });
     
    $('#orpho-quote').bind("mousedown", function(){
        $('#replytext').val($txt);
    });
     
});
</script>
<!-- End JavaScript -->
</html>

 $('#orpho-quote').bind("mousedown", function(){ /*Вот тут как я понимаю, нужно вставить функцию вызова модельного окна вместо перевода текста в блок. А в начале скрипта, соответственно, описание блока нужно убрать. Хотя могу и ошибаться :) */

// Взято с GitHub - assets/components/orphoman/js/orphoman.js (строка 22 | 26 и ниже, сразу после проверки на 
//============================================
$(document).on('keydown', function(e) {
 					if (e.keyCode == 13 && e.ctrlKey)
//============================================
)
______________________________________________ 
       var text = Selection.getText();
 						var message = '';
 						if (text.length < orphoConfig.min) {
-							message = 'Количество символов должно быть не менее '+orphoConfig.min +'!';
+							message = orphoConfig.messageMin+orphoConfig.min +'!';
 							Selection.message(message);
 							return false;
 						}
 						if (text.length > orphoConfig.max) {
-							message = 'Максимально допустимое количество символов '+orphoConfig.max +'!';
+							message = orphoConfig.messageMax+orphoConfig.max +'!';
 							Selection.message(message);
 							return false;
    });
________________________________________________
Стили дело настраиваемое, вполне можно применить тот же бутсрап mybootstrap.ru/javascripts/#tooltips

Надеюсь, не слишком сумбурно получилось.
Алексей Федоров
26 октября 2015, 00:23
0
В одном разделе прикрутить тикетс в стандартном варианте (Ответ под сообщением и чуть смещен) — прямо как здесь.

А в другом разделе — каждый новый комментарий становится последним, как вариант добавить автопростановку цитаты, чтобы было понятно к чему относится ответ. Такая себе заготовка под форум.

Вот и возник вопрос можно ли так сделать? Например, дополнить файл javascript'а? Или под это придется делать новый компонент, который будет использовать тикетс? Или я туплю, и где-то в настройках можно сделать разный вывод тикетов для разных разделов?

На мой взгляд Ticket's — практически готовый форум для modx =) поставить последовательный вывод комментов, добавить вывод информации из UserProfile2 под иконкой пользователя, добавить несколько кнопок в MarkitUp и вуаля! Новая тема форума = новый тикет. Ответы, они и в Африке ответы. Топики на одну тематику создавать в одном разделе, которые уже можно объединить по категориям, сделать вложенность и т.д. По сути нативный и стабильный форум для modx, чего многие ждут.

Но при этом терять привычные возможности Ticket's не хочется. Получится такое сделать?
Алексей Федоров
25 октября 2015, 17:54
0
Хм, пропустил слово. имелось в виду
в одном месте стандартные тикеты, а в другом — ставить новый тикет в конце списка
Алексей Федоров
25 октября 2015, 16:08
0
А можно организовать размещение ответа тикетов стандартно, а в другом вот так — в конце списка? Допустим отредактировать js и присвоить тикетам, которые выводятся нестандартно, другой класс и продублировать содержимое скрипта для второго класса? Или есть более разумное решение?
Алексей Федоров
22 октября 2015, 12:34
0
Спасибо за разъяснения. Просто, насколько знаю, MarkitUp достаточно легко кастомизируется, но варианта под word мне и правда не встречалось.
Алексей Федоров
21 октября 2015, 22:49
0
Я, может, спрошу глупость, но зачем нужен CKEditor, если есть MarkitUp?