• avatar kalina
  • 0
Спасибо. Отличное решение…
Написал в личку.
  • avatar kalina
  • 0
Супер.
Предлагаю дальше перейти в личку…
В смысле? Я доработал плагин, теперь выдает svg.
  • avatar kalina
  • 0
Можно немного раскрыть тему и поведать, что не так и предложить свои пути решения? :)

Словарь Вильяма Шекспира, по подсчету исследователей, составляет 12 000 слов. Словарь негра из людоедского племени «Мумбо-Юмбо» составляет 300 слов.
Эллочка Щукина легко и свободно обходилась тридцатью...
(Двенадцать стульев)
  • avatar 1px
  • 0
Да также всё.
У меня есть примеры, но они вынесены в сниппеты и там дофига чего понасовано. По сути то же самое, попробуйте отсюда что-то для себя выцепить.
<?php 
		$flparams = array(
			'noemail'=>1,
			'protectSubmit'=> 0,
			'submitLimit'=> 0,
			'exitTo'=> 52,
			'controller'=> 'Content',
			'idField'=>'id',
			'onlyUsers'=> 1,
			'userGroups'=> 'Физическое лицо;Юридическое лицо;Модератор',
			'ownerField'=>'aid',
			'editSuccessTpl'=> '@CODE: <div class="add_success">Объявление отредактировано.
После проверки модератором оно будет опубликовано на сайте</div>',
			'badGroupTpl'=> '@CODE: Нет прав. Попробуйте ещё раз.',
			'errorTpl'=> '@CODE:<div class="err_wrap">[+message+]</div>',
			'badGroupTpl'=> '@CODE: Нет прав. Попробуйте ещё раз.',
			'badOwnerTpl'=> '@CODE: Вы не можете редактировать запись - вы не автор',			
			'errorClass'=> 'errclass',
			'requiredClass'=> 'reqclass',
			'messagesTpl'=>'@CODE:<div class="form-messages">Ошибки</div>',			
			'rules'=> '{
				"ptitle": {
					"required": "Напишите название",
					"lengthBetween" : {
						"params" : [3,100],
						"message" : "От 3 до 100 символов"
					}					
				},
				"city":{
					"required": "Неверный адрес"
				},				
				"ads_content": {
					"required": "Напишите описание",
					"lengthBetween" : {
						"params" : [10,1500],
						"message" : "От 10 до 1500 символов"
					}				
				},
				"price":{
					"required": "Напишите цену",
					"decimal":"В цене допустимы точки и цифры"
				}
			}',
			'defaultsSources'=>'param:contentDefaults',
			'contentDefaults' => '{"published":0}',
			'emptyFormControls'=>'{"published":0}',
			'contentFields'=> '{
				"published":"published",
				 "pagetitle":"ptitle",
				 "ads_type":"ads_type",
				 "ads_status":"ads_status",
				 "price":"price",
				 "nds":"nds",
				 "city":"city",
				 "space": "space",
				 "ads_content":"ads_content",
				 "phone":"phone",
				 "entrance":"entrance",
				 "jur_address":"jur_address",
				 "metro":"metro",
				 "lightbox":"lightbox",
				 "ramp":"ramp",
				 "electro":"electro",
				 "heating":"heating",
				 "gaz":"gaz",
				 "bathroom":"bathroom",
				 "water":"water",
				 "nums":"nums"
			 }',
			'formControls'=>'ads_type,nds,phone,entrance,jur_address,metro,lightbox,ramp,electro,heating,gaz,bathroom,water,ads_status',
			'formid'=> 'editform',
			'editTpl'=> '@CODE:
				<form method="post" class="form form_object" enctype="multipart/form-data">
					[+form.messages+]
					<input type="hidden" name="formid" value="editform">
					<input type="hidden" name="id" value="[+id+]">
					<div class="grid">
						<div class="line">
							<div class="name">Заголовок вашего объявления</div>
							<div class="field title_fields">
								<select class="input" name="ads_type" class="[+ads_type.errorClass+] [+ads_type.requiredСlass+]">
									<option value="Продаю" [+s.ads_type.Продаю+]>Продаю</option>
									<option value="Куплю" [+s.ads_type.Куплю+]>Куплю</option>
									<option value="Арендую" [+s.ads_type.Арендую+]>Арендую</option>
									<option value="Сдам в аренду" [+s.ads_type.Сдам в аренду+]>Сдам в аренду</option>
								</select>
								<input class="input [+ptitle.errorClass+] [+ptitle.requiredСlass+]" type="text" placeholder="Что именно?" name="ptitle" value="[+ptitle.value+]">[+ptitle.error+]
							</div>
						</div>
						<div class="line price">
							<div class="name">Цена</div>
								<div class="field">
								<input class="input [+price.errorClass+] [+price.requiredСlass+] "  name="price" value="[+price.value+]" class="input" step="0.01" type="number" placeholder="10.00"><span class="valute"> руб.</span>
								<input type="checkbox" name="nds" id="nds_check" value="1" [+c.nds.1+]>
								<label for="nds_check">С НДС</label>[+price.error+]
							</div>
						</div>
						<div class="line">
							<div class="name">Площадь</div>
							<div class="field"><input type="text" name="space" value="[+space.value+]" class="input"></div>
						</div>
						<div class="line features">
							<div class="field"><input id="t25" type="checkbox" name="phone" value="1" [+c.phone.1+]><label for="t25">Телефонная линия</label></div>

							<div class="field"><input id="t15" type="checkbox" name="entrance" value="1" [+c.entrance.1+]><label for="t15">Отдельный вход</label></div>

							<div class="field"><input id="t16" type="checkbox" name="jur_address" value="1" [+c.jur_address.1+] ><label for="t16">Юр. адрес</label></div>

							<div class="field"><input id="t17" type="checkbox" name="metro" value="1" [+c.metro.1+] ><label for="t17">Рядом метро</label></div>

							<div class="field"><input id="t18" type="checkbox" name="lightbox" value="1" [+c.lightbox.1+] ><label for="t18">Естественное освещение</label></div>

							<div class="field"><input id="t19" type="checkbox" name="ramp" value="1" [+c.ramp.1+] ><label for="t19">Рампа</label></div>

							<div class="field"><input id="t20" type="checkbox" name="electro" value="1" [+c.electro.1+] ><label for="t20">Электроснабжение</label></div>

							<div class="field"><input id="t21" type="checkbox" name="heating" value="1" [+c.heating.1+] ><label for="t21">Отопление</label></div>

							<div class="field"><input id="t22" type="checkbox" name="gaz" value="1" [+c.gaz.1+]><label for="t22">Газ</label></div>

							<div class="field"><input id="t23" type="checkbox" name="bathroom" value="1" [+c.bathroom.1+] ><label for="t23">Санузел</label></div>

							<div class="field"><input id="t24" type="checkbox" name="water" value="1" [+c.water.1+] ><label for="t24">Наличие водоснабжения</label></div>		
						</div>
			
						<div class="line">
							<div class="name">Подробности</div>
								<div class="field">
									[+ads_content.error+]
									<textarea  class=" [+ads_content.errorClass+] [+ads_content.requiredСlass+]" name="ads_content">[+ads_content.value+]</textarea>
							</div>
						</div>
						<div class="line">
						<div class="line">
							<div class="submit">
								'.$publish_select.'
								<button type="submit" class="submit_btn">СОХРАНИТЬ</button>
							</div>	
						</div>	
					</div>
				</form>'
		);	
	}

	if($can_moderate){
		$flparams['onlyOwners'] = "0";
		$flparams['ownerField'] = '';
		$flparams['editSuccessTpl'] = '@CODE: <div class="add_success">Объявление отредактировано</div>';
		$flparams['prepareAfterProcess'] = 'preparePublishingStatus';
		$flparams['exitTo'] = 102;
	}
	$out = $modx->runSnippet('FormLister',$flparams);
		
	echo  $out;
Хо-хо-хо (:

<?php
/**
 * MathX - LaTeX formulas in MODx
 *
 * Copyright 2012 by MadMage <daniele.calisi@gmail.com>
 *
 * MathX - LaTeX formulas in MODx is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option) any
 * later version.
 *
 * MathX - LaTeX formulas in MODx is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * MathX - LaTeX formulas in MODx; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 * Suite 330, Boston, MA 02111-1307 USA
 *
 * @package mathx
 */
/**
 * @package mathx
 */

if ($modx->event->name == 'OnWebPagePrerender') {
  $mathx = 'mathx';
  $config = &$modx->getConfig();
  $cache_path = $config['assets_path'] . 'components/' . $mathx . '/';
  $cache_url = $config['assets_url'] . 'components/' . $mathx . '/';
  if (!is_dir($cached_images)) {
    mkdir($cache_path, 0777);
  }
  $cached_images = glob($cache_path . '*');
  
  $output = &$modx->resource->_output;
  
  $fn1 =
    '$cp = "' . $cache_path . '";
    $cu = "' . $cache_url . '";
    $mt = "";
    $img = ';
  $fn2 = 'md5($m[1]) . ".svg";
    if (!file_exists($cp . $img)) {
      $ne = str_replace(" ", "%20", $m[1]);
      $ch = curl_init("http://latex.codecogs.com/svg.latex?';
  $fn3 = '" . $ne);
      $fp = fopen($cp . $img, "w");
      curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_exec($ch); curl_close($ch); fclose($fp);
      $mt = " ";
    }
    return "';
  $fn4 = '";';
  
  $img_html_block = '<img class=\"mathx_block\" src=\"".$cu.$img."\" title=\"".$m[1].$mt."\">';
  $img_html_inline = '<img class=\"mathx_inline\" src=\"".$cu.$img."\" title=\"".$m[1].$mt."\">';
  $fn_block = $fn1.$fn2.$fn3.'<div class=\"mathx_block\">'.$img_html_block.'</div>'.$fn4;
  $fn_inline = $fn1.'"i-".'.$fn2.'\inline%20'.$fn3.'<span class=\"mathx_inline\">'.$img_html_inline.'</span>'.$fn4;
  
  $output = preg_replace_callback('@<math>(.*?)</math>@ui', 
      create_function('$m', $fn_block), $output);
  
  $output = preg_replace_callback('@<m>(.*?)</m>@ui', 
      create_function('$m', $fn_inline), $output);
}
Спасибо большое за пример! Нигде нет документации по этому поводу.
Можете подсказать, пожалуйста, как сделать форму для изменения страницы?
  • avatar 1px
  • 1
Да. Вот весь код:
<code>
			[!FormLister?
			&protectSubmit=`0`
			&submitLimit=`0`
			&controller=`Content`
			&defaultsSources=`param:contentDefaults`
			&contentDefaults=`{
			"template":"8",
			"parent":"107492",
			"published":"0"
			}`
			&keepDefaults=`1`
			&contentFields=`{
			"pagetitle":"name",
			"parent":"parent",
			"content":"details",
			"blog_copy":"telefon"
			}`
			&onlyUsers=`0`
			&formid=`basic`
			&formTpl=`ТУТ ВАША ФОРМА`
			&messagesOuterTpl=`@CODE:<div class="alert alert-danger" role="alert">[+messages+]</div>`
			&errorTpl=`@CODE:<span class="help-block">[+message+]</span>`
			&errorClass=` has-error`
			&requiredClass=` has-warning`
			&to=`info@sitename.ru`
			&subject=`Новое сообщение`
			&reportTpl=`@CODE:
			<p>Имя: [+name.value+]</p>
			<p>Телефон: [+phone.value+]</p>
			<p>Email: <a href="mailto:[+email.value+]">[+email.value+]</a></p>
			<p>Сообщение: [+message:strip_tags:nl2br+]</p>
			`
			!]		
</code>
parent не пугайтесь, это тестовый сайтик, там было когда-то очень много доков)
И даже ТВ-параметры заполнились?
  • avatar 1px
  • 0
У меня ваш пример вообще вызывает mysql ошибку, т.к. нет parent.
Перенёс его в contentFields и всё заработало.
Неужели я спросил что-то банальное и где-то есть много примеров/документации для FormLister где всё расписано, а я прошел мимо?
Поддержал немного. С нетерпением жду выхода EVO 2.0.
  • avatar Dreamer
  • 0
Пока это есть только во внутренностях собственноручно сделанных магазинов. В виде готового для использования скрипта я никуда не выкладывал. Может быть, созрею выпустить и свое какое-то доплнение для modx, но пока очень сильный аврал с заказами.
  • avatar Dreamer
  • 0
Попробуйте сделать отдельный php-файлик, где напрямую, без modx, вызвать функцию отсылки письма через SMTP. Если не пройдет — то напрягайте техподдержку хостера.
  • avatar kassio
  • 0
А где можно ознакомиться с вашими наработками?
  • avatar Redduck
  • 0
Добрый день.
Ну тут всё очень сложно и прямо так с ходу не скажешь. Могу только предложить как копать. Посмотреть результат сохранения в базе. Думаю что там чисто. Тогда копать почему не сохраняет. Возможно результат сохранения переписывается в первый коммент.
  • avatar kalina
  • 1
Спасибо, сделал так:
if (!is_dir($cache_path)) {
  • avatar Redduck
  • 0
В принципе, Если смотреть на предоставленный код то видно что $cached_images в дальнейшем не используется. И более того я думаю что автор предполагал такую проверку:
if (!is_dir($cache_path)) {
    mkdir($cache_path, 0777);
  }

Можно закомментировать, а можно подавить ошибку
if (!is_dir($cached_images)) {
   @mkdir($cache_path, 0777);
  }
  • avatar kalina
  • 0
А что, если закомментировать проверку директории cached_images-?

/* 
if (!is_dir($cached_images)) {
   mkdir($cache_path, 0777);
  }
*/
  • avatar kalina
  • 0
Спасибо, за поддержку…

Внёс изменения, ошибка не исчезла:
<code><span class="pun">[</span><span class="lit">2018</span><span class="pun">-</span><span class="lit">09</span><span class="pun">-</span><span class="lit">20</span><span class="pln"> </span><span class="lit">11</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">37</span><span class="pun">]</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ERROR @ </span><span class="pun">****</span><span class="pln"> </span><span class="str">/core/</span><span class="pln">cache</span><span class="pun">/</span><span class="pln">includes</span><span class="pun">/</span><span class="pln">elements</span><span class="pun">/</span><span class="pln">modplugin</span><span class="pun">/</span><span class="lit">66.include</span><span class="pun">.</span><span class="pln">cache</span><span class="pun">.</span><span class="pln">php </span><span class="pun">:</span><span class="pln"> </span><span class="lit">34</span><span class="pun">)</span><span class="pln"> PHP warning</span><span class="pun">:</span><span class="pln"> is_dir</span><span class="pun">()</span><span class="pln"> expects parameter </span><span class="lit">1</span><span class="pln"> to be a valid path</span><span class="pun">,</span><span class="pln"> array given
</span><span class="pun">[</span><span class="lit">2018</span><span class="pun">-</span><span class="lit">09</span><span class="pun">-</span><span class="lit">20</span><span class="pln"> </span><span class="lit">11</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">37</span><span class="pun">]</span><span class="pln"> </span><span class="pun">(</span><span class="pln">ERROR @ </span><span class="pun">****</span><span class="pln"> </span><span class="str">/core/</span><span class="pln">cache</span><span class="pun">/</span><span class="pln">includes</span><span class="pun">/</span><span class="pln">elements</span><span class="pun">/</span><span class="pln">modplugin</span><span class="pun">/</span><span class="lit">66.include</span><span class="pun">.</span><span class="pln">cache</span><span class="pun">.</span><span class="pln">php </span><span class="pun">:</span><span class="pln"> </span><span class="lit">35</span><span class="pun">)</span><span class="pln"> PHP warning</span><span class="pun">:</span><span class="pln"> mkdir</span><span class="pun">():</span><span class="pln"> </span><span class="pun">Файл</span><span class="pln"> </span><span class="pun">существует</span></code>