Если честно я не совсем понял для чего это.... Это как обычный форум, но с возможностью голосования за/против. Плюс тут ещё ticket'ы завязаны....
Что-то узкоспециализированное для официального сайта phpbb.
Если честно я не совсем понял для чего это.... Это как обычный форум, но с возможностью голосования за/против. Плюс тут ещё ticket'ы завязаны....
Инфу принял.
Это у них как журнал заметок, где пользователи предлагают рассмотреть какие либо изменения. Они публикуют свои идеи по поводу каких-то доработок для досок. Предлагают ввести новые функции, исправит и проработать уже имеющиеся. После чего модератор делает тикет на трекер в Арию_51 где уже спецы дополняют пробелы (это какбы гидхаб) только месный для пхпбб, как я это понял. Потом когда идея была осуществлена, модератор меняет маркеры к примеру с "на рассмотрении" на " реализованную идею". Голосующие своими за/против показывают на сколько актуально или бессмысленна идея. Чем больше резонанс, тем вероятнее что идея к поправкам или дополнениям будет учтена. Я думаю очень нужная прилажуха, для сообщества.
Ну да, так и есть, здесь нет ни чего навороченного. Единственный плюс экста в том, что есть кнопки за/против и возможность маркировок тем.
controller/index_controller.php
и находите в нём:
Код: Выделить всё
$this->assign_template_block_vars('implemented_ideas', $ideas);
Код: Выделить всё
// Add
// Generate duplicate
$ideas = $this->entity->get_ideas(ext::NUM_IDEAS, ext::SORT_DATE, 'DESC', ext::$statuses['DUPLICATE']);
$this->assign_template_block_vars('duplicate_ideas', $ideas);
// Generate in progress
$ideas = $this->entity->get_ideas(ext::NUM_IDEAS, ext::SORT_DATE, 'DESC', ext::$statuses['IN_PROGRESS']);
$this->assign_template_block_vars('in_progress_ideas', $ideas);
// Generate invalid
$ideas = $this->entity->get_ideas(ext::NUM_IDEAS, ext::SORT_DATE, 'DESC', ext::$statuses['INVALID']);
$this->assign_template_block_vars('invalid_ideas', $ideas);
index_body.html
и тут уже вам решать куда именно и в каком порядке, главное чтобы не выше {% include 'action_bar_top.html' %}
и не ниже {% include 'overall_footer.html' %}
. Сами блоки:
Код: Выделить всё
{# ADD :: DUPLICATE #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('DUPLICATE') }}</h2>
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = duplicate_ideas %}
{% include 'index_list.html' %}
</div>
</div>
{# ADD :: IN_PROGRESS #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('IN_PROGRESS') }}</h2>
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = in_progress_ideas %}
{% include 'index_list.html' %}
</div>
</div>
{# ADD :: INVALID #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('INVALID') }}</h2>
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = invalid_ideas %}
{% include 'index_list.html' %}
</div>
</div>
_IDEAS
, например:
Код: Выделить всё
{{ lang('DUPLICATE_IDEAS') }}
common.php
добавить эти переменные со своим значением:
Код: Выделить всё
'DUPLICATE_IDEAS' => 'Своё название',
'IN_PROGRESS_IDEAS' => 'Своё название',
'INVALID_IDEAS' => 'Своё название',
idea_body.html
и удаляете:
Код: Выделить всё
{% if IDEA_TICKET or S_CAN_EDIT %}
<div class="status-item flex-box flex-align-end">
{{ lang('TICKET') ~ lang('COLON') }}
<a id="ticketlink" {% if IDEA_TICKET %}href="https://tracker.phpbb.com/browse/PHPBB3-{{ IDEA_TICKET }}">PHPBB3-{{ IDEA_TICKET }}{% else %}style="display:none">{% endif %}</a>
{% if S_CAN_EDIT %}
<a href="{{ U_EDIT_TICKET }}" id="ticketedit" data-l-add="{{ lang('ADD') }}" data-l-edit="{{ lang('EDIT') }}">{% if IDEA_TICKET %}<i class="icon fa-fw fa-pencil"></i>{{ lang('EDIT') }}{% else %}<i class="icon fa-fw fa-plus-circle"></i>{{ lang('ADD') }}{% endif %}</a>
<input type="text" id="ticketeditinput" class="ideainput"{% if IDEA_TICKET %} value="PHPBB3-{{ IDEA_TICKET }}"{% endif %} placeholder="PHPBB3-#####" data-l-err="{{ lang('ERROR') }}" data-l-msg="{{ lang('TICKET_ERROR') }}" />
{% endif %}
</div>
{% endif %}
Код: Выделить всё
{% if IDEA_IMPLEMENTED or S_IS_MOD %}
<div class="status-item flex-box flex-align-end implementedtoggle" {% if IDEA_STATUS_ID != STATUS_ARY.IMPLEMENTED %}style="display:none"{% endif %}>
{{ lang('IMPLEMENTED_VERSION') ~ lang('COLON') }}
<span id="implementedversion"{% if not IDEA_IMPLEMENTED %} style="display:none;"{% endif %}>{{ IDEA_IMPLEMENTED }}</span>
{% if S_IS_MOD %}
<a href="{{ U_EDIT_IMPLEMENTED }}" id="implementededit" data-l-add="{{ lang('ADD') }}" data-l-edit="{{ lang('EDIT') }}">{% if IDEA_IMPLEMENTED %}<i class="icon fa-fw fa-pencil"></i>{{ lang('EDIT') }}{% else %}<i class="icon fa-fw fa-plus-circle"></i>{{ lang('ADD') }}{% endif %}</a>
<input type="text" id="implementededitinput" class="ideainput"{% if IDEA_IMPLEMENTED %} value="{{ IDEA_IMPLEMENTED }}"{% endif %} placeholder="3.x.x" data-l-err="{{ lang('ERROR') }}" data-l-msg="{{ lang('IMPLEMENTED_ERROR') }}" />
{% endif %}
</div>
{% endif %}
index_body.html
и выглядят так:
Код: Выделить всё
<a class="button view-all" href="{{ U_VIEW_TOP }}"><i class="icon fa-fw fa-line-chart"></i> <span>{{ lang('VIEW_TOP') }}</span></a>
<a class="button view-all" href="{{ U_VIEW_LATEST }}"><i class="icon fa-fw fa-lightbulb-o"></i> <span>{{ lang('VIEW_LATEST') }}</span></a>
<a class="button view-all" href="{{ U_VIEW_IMPLEMENTED }}"><i class="icon fa-fw fa-code-fork fa-flip-vertical"></i> <span>{{ lang('VIEW_IMPLEMENTED') }}</span></a>
Код: Выделить всё
{% if top_ideas %}
<a class="button view-all" href="{{ U_VIEW_TOP }}"><i class="icon fa-fw fa-line-chart"></i> <span>{{ lang('VIEW_TOP') }}</span></a>
{% endif %}
Нее)) я хотел использовать эти поля в своих целях, чтобы поля ввода остались а информация своя была))CabinetAdmin писал(а): ↑04 дек 2021, 17:45 Ах да, ещё тиккет и версия phpbb, если хочется их удалить, чтобы глаза не мозолило
Код: Выделить всё
{# ADD :: DUPLICATE #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('DUPLICATE') }}</h2>
{% if duplicate_ideas %}
<a class="button view-all" href="{{ U_VIEW_DUPLICATE }}"><i class="icon fa-fw fa-code-fork fa-flip-vertical"></i> <span>{{ lang('VIEW_DUPLICATE') }}</span></a>
{% endif %}
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = duplicate_ideas %}
{% include 'index_list.html' %}
</div>
</div>
{# ADD :: IN_PROGRESS #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('IN_PROGRESS') }}</h2>
{% if in_progress_ideas %}
<a class="button view-all" href="{{ U_VIEW_IN_PROGRESS }}"><i class="icon fa-fw fa-code-fork fa-flip-vertical"></i> <span>{{ lang('VIEW_IN_PROGRESS') }}</span></a>
{% endif %}
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = in_progress_ideas %}
{% include 'index_list.html' %}
</div>
</div>
{# ADD :: INVALID #}
<div class="flex-box flex-align-end flex-justify">
<h2>{{ lang('INVALID') }}</h2>
{% if invalid_ideas %}
<a class="button view-all" href="{{ U_VIEW_INVALID }}"><i class="icon fa-fw fa-code-fork fa-flip-vertical"></i> <span>{{ lang('VIEW_INVALID') }}</span></a>
{% endif %}
</div>
<div class="forumbg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="row-item">
<dt><div class="list-inner">{{ lang('IDEAS') }}</div></dt>
<dd class="posts">{{ lang('VOTES') }}</dd>
</dl>
</li>
</ul>
{% set ideas = invalid_ideas %}
{% include 'index_list.html' %}
</div>
</div>
controller/index_controller.php
найти:
Код: Выделить всё
'U_VIEW_IMPLEMENTED'=> $this->helper->route('phpbb_ideas_list_controller', ['sort' => ext::SORT_DATE, 'status' => ext::$statuses['IMPLEMENTED']]),
Код: Выделить всё
// Add
'U_VIEW_DUPLICATE'=> $this->helper->route('phpbb_ideas_list_controller', ['sort' => ext::SORT_DATE, 'status' => ext::$statuses['DUPLICATE']]),
'U_VIEW_IN_PROGRESS'=> $this->helper->route('phpbb_ideas_list_controller', ['sort' => ext::SORT_DATE, 'status' => ext::$statuses['IN_PROGRESS']]),
'U_VIEW_INVALID'=> $this->helper->route('phpbb_ideas_list_controller', ['sort' => ext::SORT_DATE, 'status' => ext::$statuses['INVALID']]),
common.php
добавить переменные для кнопок, так же как и в предыдущий раз:
Код: Выделить всё
'VIEW_DUPLICATE' => 'Своё название',
'VIEW_IN_PROGRESS' => 'Своё название',
'VIEW_INVALID' => 'Своё название',
VIEW_
.Код: Выделить всё
<a id="ticketlink" {% if IDEA_TICKET %}href="https://tracker.phpbb.com/browse/PHPBB3-{{ IDEA_TICKET }}">PHPBB3-{{ IDEA_TICKET }}{% else %}style="display:none">{% endif %}</a>
Код: Выделить всё
https://tracker.phpbb.com/browse/PHPBB3-
PHPBB3-
, что-то вроде такого:
Код: Выделить всё
{% if IDEA_TICKET or S_CAN_EDIT %}
<div class="status-item flex-box flex-align-end">
{{ lang('TICKET') ~ lang('COLON') }}
<a id="ticketlink" {% if IDEA_TICKET %}href="{{ IDEA_TICKET }}">{{ IDEA_TICKET }}{% else %}style="display:none">{% endif %}</a>
{% if S_CAN_EDIT %}
<a href="{{ U_EDIT_TICKET }}" id="ticketedit" data-l-add="{{ lang('ADD') }}" data-l-edit="{{ lang('EDIT') }}">{% if IDEA_TICKET %}<i class="icon fa-fw fa-pencil"></i>{{ lang('EDIT') }}{% else %}<i class="icon fa-fw fa-plus-circle"></i>{{ lang('ADD') }}{% endif %}</a>
<input type="text" id="ticketeditinput" class="ideainput"{% if IDEA_TICKET %} value="{{ IDEA_TICKET }}"{% endif %} data-l-err="{{ lang('ERROR') }}" data-l-msg="{{ lang('TICKET_ERROR') }}" />
{% endif %}
</div>
{% endif %}
controller/index_controller.php
сейчас все переходы срабатывают верно, всё хорошо.event/listener.php
, найти:
Код: Выделить всё
$can_vote = (bool) ($idea['idea_status'] != ext::$statuses['IMPLEMENTED'] &&
$idea['idea_status'] != ext::$statuses['DUPLICATE'] &&
$this->auth->acl_get('f_vote', (int) $this->config['ideas_forum_id']) &&
$event['topic_data']['topic_status'] != ITEM_LOCKED);
Код: Выделить всё
$can_vote = (bool) ($this->auth->acl_get('f_vote', (int) $this->config['ideas_forum_id']) && $event['topic_data']['topic_status'] != ITEM_LOCKED);
понятно(
Duplicate
везде придется прописывать добавление, так? Если его брать за основу. Двумя файлами не обойтись. Не обойтись.
У меня давно валяется вот этот ббкод таймера, но как его привести в действие я не знаю, что то в нём не то по моему, где его концы я не помню, поэтому выяснить как он должен работать не представляется возможным. Если вы сможете его понять, то он ваш))
Код: Выделить всё
[Taimer]{SIMPLETEXT}[/Taimer]
Код: Выделить всё
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="distribution" content="global">
<meta name='revisit' content='1'>
<meta name='revisit' content='1 day'>
<meta name='revisit' content='1 days'>
<meta name='revisit-after' content='1 day'>
<meta name='revisit-after' content='1 days'>
<meta name="robots" content="index,all">
<meta name='revisit-after' content='1'>
<meta name='document-state' content='Dynamic'>
<DIV align="center" ID="countdown"></DIV>
<SCRIPT type="text/javascript" language="javascript">//Скрипт обратного отсчета времени CountDown
var eventstr="Конкурс закончился!"; //Эта строка выводиться по окончанию отсчета
var countdownid=document.getElementById("countdown"); //ID элемента в который выводится время
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); function CountDowndmn(yr,m,d){cdyear=yr; cdmonth=m; cdday=d; var today=new Date(); var todayy=today.getYear(); if (todayy<1000)
todayy+=1900; var todaym=today.getMonth(); var todayd=today.getDate(); var todayh=today.getHours(); var todaymin=today.getMinutes(); var todaysec=today.getSeconds(); var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec; futurestring=montharray[m-1]+" "+d+", "+yr
dd=Date.parse(futurestring)-Date.parse(todaystring); dday=Math.floor(dd/(60*60*1000*24)*1); dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1); dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1); dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1); if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1){countdownid.innerHTML=eventstr; return} else {var lastchar=""+dsec; lastchar=lastchar.substring(lastchar.length-1,lastchar.length);
var dsecstr="секунд"; if (lastchar=="1"){dsecstr="секунда";} if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")){dsecstr="секунды";}
lastchar=""+dmin; lastchar = lastchar.substring(lastchar.length-1,lastchar.length); var dminstr="минут"; if (lastchar=="1"){dminstr="минута";} if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")){dminstr="минуты";}
lastchar=""+dhour; lastchar=lastchar.substring(lastchar.length-1,lastchar.length); var dhourstr="часов"; if (lastchar=="1"){dhourstr="час";} if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")){dhourstr="часа";}
lastchar=""+dday; lastchar=lastchar.substring(lastchar.length-1,lastchar.length); var ddaystr="дней"; if (lastchar=="1"){ddaystr="день";} if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")){ddaystr="дня";}
countdownid.innerHTML="До окончания конкурса осталось: <br> "+dday+ " " +ddaystr+", "+dhour+" "+dhourstr+", "+dmin+" "+dminstr+" и "+dsec+" "+dsecstr;}
setTimeout("CountDowndmn(cdyear,cdmonth,cdday)",1000);} CountDowndmn(2011,06,01); //Дата отсчета: год, месяц, число
</SCRIPT>
Код: Выделить всё
Таймер
[Taimer]12-12-2021 20:40:00[/ Taimer]
'status_id' => 2,
'status_name' => 'IN_PROGRESS',
ideas/list/top
а также в "новых" ideas/list
'status_name'=> 'IMPLEMENTED',
4'status_name'=> 'DUPLICATE',
5'status_name'=> 'INVALID',
и получается несуразится какая-то. Поэтому с этим нужно что-то сделать либо как минимум удалить ТОП вообще, чтобы свести к минимуму дублирующий раздел, чтобы только один из пяти показывался в двух местах (это дело можно обыграть и скрестить пару рубрик в одну, и тогда IN_PROGRESS будет только в NEW ), либо с помощью вашего гения уничтожить сам принцип попадания в топ, а сам топ сделать самостоятельной отдельной рубрикой, как IMPLEMENTED, DUPLICATE, INVALID которые с топом не связаны и не отображаются на главной стр. идей.factory/ideas.php
найти:
Код: Выделить всё
'i.idea_status', [ext::$statuses['IMPLEMENTED'], ext::$statuses['DUPLICATE'], ext::$statuses['INVALID'],
Код: Выделить всё
'i.idea_status', [ext::$statuses['IMPLEMENTED'], ext::$statuses['DUPLICATE'], ext::$statuses['INVALID'], ext::$statuses['IN_PROGRESS'],