<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Движок сайтов S2 — Доступ к посту по паролю]]></title>
	<link rel="self" href="https://s2cms.ru/forum/feed/atom/topic/238/"/>
	<updated>2017-12-20T19:51:09Z</updated>
	<generator>PunBB</generator>
	<id>https://s2cms.ru/forum/topic/238/</id>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1376/#p1376"/>
			<content type="html"><![CDATA[<p>У меня готового решения нет. Это надо программировать. Идея изложена выше. Конкретная реализация зависит от того, как вы хотите спрашивать пароль, в какую форму его вводить, запоминать или нет.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2017-12-20T19:51:09Z</updated>
			<id>https://s2cms.ru/forum/post/1376/#p1376</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1375/#p1375"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>Роман пишет:</cite><blockquote><p>Готовое решение для чего? Что вы хотите сделать? Что сделали? Что ожидаете? Что получилось на самом деле?</p></blockquote></div><p>готовое решение (расширение) для ограничения доступа к контенту по паролю.<br />хочу в Вашем движке реализовать функцию ограничения доступа к конкретным статьям.<br />что сделал: попробовал прикрутить скрипты аутентификации к шаблону, попробовал организовать хуки.<br />ожидаю, что Вы вдруг дадите готовое решение)<br />что получилось: ничего.</p><p>з.ы: я недопрограммер, скорее адаптирую чужой код под свои нужды, но в данном случае полный провал.</p>]]></content>
			<author>
				<name><![CDATA[hon]]></name>
				<uri>https://s2cms.ru/forum/user/254/</uri>
			</author>
			<updated>2017-12-20T06:45:22Z</updated>
			<id>https://s2cms.ru/forum/post/1375/#p1375</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1374/#p1374"/>
			<content type="html"><![CDATA[<p>Готовое решение для чего? Что вы хотите сделать? Что сделали? Что ожидаете? Что получилось на самом деле?</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2017-12-19T18:30:17Z</updated>
			<id>https://s2cms.ru/forum/post/1374/#p1374</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1373/#p1373"/>
			<content type="html"><![CDATA[<div class="quotebox"><cite>Роман пишет:</cite><blockquote><p>Проблема в том, что хук fn_toolbar_end определен в функции s2_toolbar(). В ее теле нет доступа к переменной $page (это локальная переменная функции s2_output_article_form()).</p><p>Вы можете занести значение $page[&#039;pwd&#039;] в глобальную переменную в функции s2_output_article_form(), и обращаться к ней из s2_toolbar(). Код примерно такой, я его не тестировал:</p><div class="codebox"><pre><code>        &lt;hook id=&quot;fn_output_article_form_pre_output&quot;&gt;&lt;![CDATA[
global $page_passwords_cur_pwd;
$page_passwords_cur_pwd = $page[&#039;pwd&#039;];
        ]]&gt;&lt;/hook&gt;

        &lt;hook id=&quot;fn_output_article_form_pre_mkeys&quot;&gt;&lt;![CDATA[
?&gt;
            &lt;tr&gt;
                &lt;td class=&quot;label&quot;&gt;Пароль&lt;/td&gt;
                &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;page[pwd]&quot; size=&quot;100&quot; 
                    value=&quot;&lt;?php echo s2_htmlencode($page_passwords_cur_pwd); ?&gt;&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
&lt;?php
        ]]&gt;&lt;/hook&gt;</code></pre></div><p>(Чтобы избежать возможных конфликтов имен, к глобальным переменным лучше добавлять префикс из id расширения, как page_passwords в моем примере.)</p><p>Другой способ - оставить вывод поля где-то в функции s2_output_article_form(), и поместить в нужное место страницы за счет абсолютного позиционирования в CSS.</p></blockquote></div><p>поковырял поковырял, но так и не нашел решения.<br />Возможно появилось уже готовое решение? или хотя бы инструкция для чайника</p>]]></content>
			<author>
				<name><![CDATA[hon]]></name>
				<uri>https://s2cms.ru/forum/user/254/</uri>
			</author>
			<updated>2017-12-19T07:05:20Z</updated>
			<id>https://s2cms.ru/forum/post/1373/#p1373</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1277/#p1277"/>
			<content type="html"><![CDATA[<p>есть простой первобытный вариант: взять и поставить htpasswd</p>]]></content>
			<author>
				<name><![CDATA[twonetru]]></name>
				<uri>https://s2cms.ru/forum/user/229/</uri>
			</author>
			<updated>2016-01-09T08:10:41Z</updated>
			<id>https://s2cms.ru/forum/post/1277/#p1277</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1134/#p1134"/>
			<content type="html"><![CDATA[<p>Проблема в том, что хук fn_toolbar_end определен в функции s2_toolbar(). В ее теле нет доступа к переменной $page (это локальная переменная функции s2_output_article_form()).</p><p>Вы можете занести значение $page[&#039;pwd&#039;] в глобальную переменную в функции s2_output_article_form(), и обращаться к ней из s2_toolbar(). Код примерно такой, я его не тестировал:</p><div class="codebox"><pre><code>        &lt;hook id=&quot;fn_output_article_form_pre_output&quot;&gt;&lt;![CDATA[
global $page_passwords_cur_pwd;
$page_passwords_cur_pwd = $page[&#039;pwd&#039;];
        ]]&gt;&lt;/hook&gt;

        &lt;hook id=&quot;fn_output_article_form_pre_mkeys&quot;&gt;&lt;![CDATA[
?&gt;
            &lt;tr&gt;
                &lt;td class=&quot;label&quot;&gt;Пароль&lt;/td&gt;
                &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;page[pwd]&quot; size=&quot;100&quot; 
                    value=&quot;&lt;?php echo s2_htmlencode($page_passwords_cur_pwd); ?&gt;&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
&lt;?php
        ]]&gt;&lt;/hook&gt;</code></pre></div><p>(Чтобы избежать возможных конфликтов имен, к глобальным переменным лучше добавлять префикс из id расширения, как page_passwords в моем примере.)</p><p>Другой способ - оставить вывод поля где-то в функции s2_output_article_form(), и поместить в нужное место страницы за счет абсолютного позиционирования в CSS.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-06-08T16:42:17Z</updated>
			<id>https://s2cms.ru/forum/post/1134/#p1134</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1131/#p1131"/>
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Надо убедиться, что поле pwd выбирается из таблицы в этом запросе: <a href="http://s2cms.ru/trac/browser/trunk/_admin/edit.php#L171">http://s2cms.ru/trac/browser/trunk/_admin/edit.php#L171</a></p></blockquote></div><p>да, передается. </p><p>Вот код manifest.xml:<br /></p><div class="codebox"><pre><code>    &lt;install&gt;
        &lt;![CDATA[
            // Create password field.
            if (!$s2_db-&gt;field_exists(&#039;articles&#039;, &#039;pwd&#039;))
            $s2_db-&gt;add_field(&#039;articles&#039;, &#039;pwd&#039;, &#039;TEXT&#039;, true);
        ]]&gt;
    &lt;/install&gt;
    &lt;uninstall&gt;
        &lt;![CDATA[
            $s2_db-&gt;drop_field(&#039;articles&#039;, &#039;pwd&#039;);
        ]]&gt;
    &lt;/uninstall&gt;
        
    &lt;hooks&gt;
        &lt;hook id=&quot;fn_toolbar_end&quot;&gt;
            &lt;![CDATA[
                // Add text field to wysiwyg.
                $s2_custom_toolbar .= &#039;&lt;img class=&quot;separator&quot; src=&quot;i/1.gif&quot; alt=&quot;&quot; /&gt;&#039;;
                $s2_custom_toolbar .= &#039;&lt;input type=&quot;text&quot; name=&quot;page[pwd]&quot; title=&quot;Пароль&quot; value=&quot;&#039;.$page[&quot;pwd&quot;].&#039;&quot; /&gt;&#039;;
                $toolbar = str_replace(&#039;&lt;/div&gt;&#039;, $s2_custom_toolbar.&#039;&lt;/div&gt;&#039;, $toolbar);
            ]]&gt;
        &lt;/hook&gt;
        &lt;hook id=&quot;fn_output_article_form_pre_page_get_qr&quot;&gt;
            &lt;![CDATA[
                // Add pwd to select.
                $query[&#039;SELECT&#039;] .= &#039;, pwd&#039;;
            ]]&gt; 
        &lt;/hook&gt;
        
        &lt;hook id=&quot;fn_save_article_pre_upd_qr&quot;&gt;
            &lt;![CDATA[
                $query[&#039;SET&#039;] .= &#039;, pwd = \&#039;&#039;.$s2_db-&gt;escape($page[&#039;pwd&#039;]).&#039;\&#039;&#039;;
            ]]&gt;
        &lt;/hook&gt;
    &lt;/hooks&gt;</code></pre></div><p>В итоге - создается поле pwd. В режиме редактирования статьи выводится input поле с name=page[pwd]. <br />При сохранении записи, значение сохраняется в таблицу articles, но не выводится в input поле (атрибут value пустой).</p><p>Если же заместо хука fn_toolbar_end использовать хук <strong>fn_output_article_form_pre_mkeys</strong>:<br /></p><div class="codebox"><pre><code>        &lt;hook id=&quot;fn_output_article_form_pre_mkeys&quot;&gt;&lt;![CDATA[
?&gt;
            &lt;tr&gt;
                &lt;td class=&quot;label&quot;&gt;Пароль&lt;/td&gt;
                &lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;page[pwd]&quot; size=&quot;100&quot; 
                    value=&quot;&lt;?php echo s2_htmlencode($page[&#039;pwd&#039;]); ?&gt;&quot; /&gt;&lt;/td&gt;
            &lt;/tr&gt;
&lt;?php
        ]]&gt;&lt;/hook&gt;</code></pre></div><p>то все отрабатывает как нужно, но поле нужно добавить после даты изменения. Как это сделать?</p>]]></content>
			<author>
				<name><![CDATA[andrey.dev]]></name>
				<uri>https://s2cms.ru/forum/user/196/</uri>
			</author>
			<updated>2014-06-06T12:54:03Z</updated>
			<id>https://s2cms.ru/forum/post/1131/#p1131</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1128/#p1128"/>
			<content type="html"><![CDATA[<p>А что в логе ошибок? Скорее всего неинициализированная переменная.</p><p>Надо убедиться, что поле pwd выбирается из таблицы в этом запросе: <a href="http://s2cms.ru/trac/browser/trunk/_admin/edit.php#L171">http://s2cms.ru/trac/browser/trunk/_admin/edit.php#L171</a></p><p>В s2_seo для этого используется хук fn_output_article_form_pre_page_get_qr:<br /><a href="http://s2cms.ru/trac/browser/extensions/trunk/s2_seo/manifest.xml#L39">http://s2cms.ru/trac/browser/extensions … st.xml#L39</a></p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-06-02T18:46:55Z</updated>
			<id>https://s2cms.ru/forum/post/1128/#p1128</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1127/#p1127"/>
			<content type="html"><![CDATA[<p>Роман, посмотрел в исходники расширения s2seo. <br />Через плагин получается добавить поле в расширенный редактор (как у <strong>boo</strong> на скриншоте),<br />записать значение этого поля в таблицу articles.pwd, но вывести его не получается.</p><p>Делаю так:<br /></p><div class="quotebox"><blockquote><p>name=&quot;page[pwd]&quot; value=&quot;&lt;?php echo s2_htmlencode($page[&#039;pwd&#039;]); ?&gt;&quot;</p></blockquote></div><p>Значение в input поле не выводится, хотя оно есть в таблице. Что я делаю не так ? <em>(это значение лежит в другом массиве, не в $page?)</em></p>]]></content>
			<author>
				<name><![CDATA[andrey.dev]]></name>
				<uri>https://s2cms.ru/forum/user/196/</uri>
			</author>
			<updated>2014-06-02T18:35:59Z</updated>
			<id>https://s2cms.ru/forum/post/1127/#p1127</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1087/#p1087"/>
			<content type="html"><![CDATA[<p>Понял, благодарю! Посмотрю на имеющиеся хуки.</p>]]></content>
			<author>
				<name><![CDATA[boo]]></name>
				<uri>https://s2cms.ru/forum/user/63/</uri>
			</author>
			<updated>2014-04-17T15:15:04Z</updated>
			<id>https://s2cms.ru/forum/post/1087/#p1087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1085/#p1085"/>
			<content type="html"><![CDATA[<p>Кажется, что напрямую редактировать не надо, можно обойтись хуком fn_s2_parse_page_url_pre_get_tpl или каким-нибудь другим.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-04-17T15:13:48Z</updated>
			<id>https://s2cms.ru/forum/post/1085/#p1085</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1083/#p1083"/>
			<content type="html"><![CDATA[<p>Отлично! То есть надо будет изменять articles.php, если я правильно понял. <br />Вы замечательно объясняете!</p><p>Буду пробовать.</p>]]></content>
			<author>
				<name><![CDATA[boo]]></name>
				<uri>https://s2cms.ru/forum/user/63/</uri>
			</author>
			<updated>2014-04-17T15:07:21Z</updated>
			<id>https://s2cms.ru/forum/post/1083/#p1083</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1080/#p1080"/>
			<content type="html"><![CDATA[<p>Это делается через такое расширение.</p><p>При установке создаются дополнительные поля в таблице articles для хранения состояния флажка и пароля. С помощью хуков их значения редактируются через новые поля ввода в редакторе. Посмотреть, как это делается, можно в расширении s2_seo: <a href="http://s2cms.ru/trac/browser/extensions/trunk/s2_seo/manifest.xml">http://s2cms.ru/trac/browser/extensions … nifest.xml</a></p><p>В простейшем случае при вводе пароля на страницах сайта он или его хеш записывается через JS в cookies. Тогда он автоматом будет передаваться на сервер.</p><p>После выборки информации из БД (где-то здесь:&nbsp; <a href="http://s2cms.ru/trac/browser/trunk/_include/articles.php#L974">http://s2cms.ru/trac/browser/trunk/_inc … s.php#L974</a>) нужно проверить правильность пароля, и, если он неправилен, подменить текст страницы на код формы с полем ввода пароля.</p>]]></content>
			<author>
				<name><![CDATA[Роман]]></name>
				<uri>https://s2cms.ru/forum/user/2/</uri>
			</author>
			<updated>2014-04-17T14:46:15Z</updated>
			<id>https://s2cms.ru/forum/post/1080/#p1080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Доступ к посту по паролю]]></title>
			<link rel="alternate" href="https://s2cms.ru/forum/post/1078/#p1078"/>
			<content type="html"><![CDATA[<p>Периодически возникает необходимость показывать текущую работу заказчику. <br />В идеале один раз высылаешь пароль и ссылку на пост, и не надо никаких писем и прочего. И процесс идёт.</p><p>Я представляю себе это таким образом. <br />При включенном плагине добавляется поле «пароль» в редакторе поста. <br />Пароль показывается постоянно, если есть. Снятие флажка отключает проверку.</p><p><span class="postimg"><img src="http://6.firepic.org/6/images/2014-04/17/an8j3tl95wm7.png" alt="http://6.firepic.org/6/images/2014-04/17/an8j3tl95wm7.png" /></span></p><p>Для пользователя показываем заголовок поста и просьбу ввести пароль.<br />При этом хочется показывать выдержку к посту после заголовка.</p><p>Роман, а подскажите как лучше это организовать?</p>]]></content>
			<author>
				<name><![CDATA[boo]]></name>
				<uri>https://s2cms.ru/forum/user/63/</uri>
			</author>
			<updated>2014-04-17T04:49:14Z</updated>
			<id>https://s2cms.ru/forum/post/1078/#p1078</id>
		</entry>
</feed>
