Cotonti сайт своими руками / Расширения / Файлы и медиа

Attacherfreelance - плагин Cotonti

24.01.2019 400

Здравствуйте, уважаемые читатели сайта cmscot.net. Плагин attacherfreelance - это расширение под Cotonti, с помощью которого можно загружать файлы, изображения, прикреплять к основным модулям фриланс биржи. Он работает на основе API плагина attacher и является мостиком для взаимодействия с модулями projects (проекты биржи фриланса), market (магазин электронных товаров), folio (портфолио фрилансеров).

Attacherfreelance - плагин

 Установка плагина attacherfreelance

  • Скачать архив, распаковать. Переименовать папку с плагином в attacherfreelance. Её нужно разместить в корневой каталог plugins, где все плагины находятся.
  • Перейти в «Управление сайтом / Расширения / Загрузка изображений и файлов фриланс» и установить с помощью интерфейса (плагин attacher уже должен быть установлен).
  • На этом процесс установки можно считать завершенным. Остается добавить код в шаблон темы.

Модуль projects freelance

Для прикрепления файлов к создаваемому проекту.

В projects.add.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PHP|att_filebox('projects', 0)}
	</td>
</tr>
<!-- ENDIF -->

Для прикрепления файлов к редактируемому проекту.

В projects.edit.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PRJEDIT_FORM_ID|att_filebox('projects', $this)}
	</td>
</tr>
<!-- ENDIF -->

Предпросмотр списка прикрепленных файлов перед публикацией проекта.

В projects.preview.tpl:

<!-- IF {PRJ_ID|att_count('projects',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRJ_ID|att_display('projects',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод прикрепленных файлов на странице проекта:

В projects.tpl:

<!-- IF {PRJ_ID|att_count('projects',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRJ_ID|att_display('projects',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод изображений в списках (категориях) проектов:

В projects.list.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
	<a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
		<img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках проектов на главной:

В projects.index.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
	<a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
		<img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках проектов в профиле:

В projects.userdetails.tpl:

<!-- IF {PRJ_ROW_ID|att_count('projects',$this,'','images')} > 0 -->
<div>
    <a href="{PRJ_ROW_URL}" title="{PRJ_ROW_SHORTTITLE}">
        <img src="{PRJ_ROW_ID|att_get('projects',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRJ_ROW_SHORTTITLE}">
    </a>
</div>
<!-- ENDIF -->

Вывод формы прикрепления файлов для исполнителя и заказчика в заявках проекта.

В projects.offers.tpl перед:

<!-- BEGIN: PROJECTFORPRO -->
<div class="alert alert-warning">{PHP.L.paypro_warning_onlyforpro}</div>
<!-- END: PROJECTFORPRO -->

Добавить:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
{PHP.item.item_id|att_performer_attach($this,'all',2)}
<!-- ENDIF -->

Эта конструкция выведет форму прикрепления файлов, видимую только если:

  1. Назначен исполнитель, статус проекта не реализован. Видят заказчик и исполнитель.
  2. Нет исполнителя, но есть прикрепленные файлы от предыдущего исполнителя (после отказа). Видит заказчик.
  3. Выбран исполнитель, проект отмечен как реализованный. Видит заказчик при наличии файлов.

Так как форма предназначена для прикрепления файлов, видимых только заказчику и исполнителю, они могут оба видеть всё что прикреплено в форму (если условие 1), могут удалять свои файлы, но не могут удалить файлы друг друга. Это подстраховка для обеих сторон.

Админ сайта видит форму и файлы при возникновении любого из перечисленных условий, и имеет права на удаление любого из них. При добавлении конструкции в шаблон темы, второй и третий параметр - это настройка типов файлов и количества, разрешенных для прикрепления. Так как функция att_performer_attach() - это обертка для функции att_filebox(), для более детального понимания параметров 2 и 3 смотрите описание $type, $limit для att_filebox().

p.s. Плагин attacher и attacherfreelance работают по принципу API, и не знают, где в какой момент, какой модуль или плагин их использует. Они лишь выводят форму загрузки или уже загруженное содержимое, ничего не зная о фрилансерах, работодателях, статусах и прочем. Применяют только разрешения указанные для них.

При интеграции в свои расширения нужно самостоятельно позаботиться об этом. В качестве примера такой функции - att_performer_attach(), которая обрабатывает логику вывода формы, но не является частью API. Она анализирует данные на основе переданного параметра, и создает условия для вывода формы att_filebox() по конкретным условиям.

Модуль market freelance

Для прикрепления файлов к добавляемому товару (не самого товара!).

В market.add.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PHP|att_filebox('market', 0)}
	</td>
</tr>
<!-- ENDIF -->

Для прикрепления файлов к редактируемому товару.

В market.edit.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PRDEDIT_FORM_ID|att_filebox('market', $this)}
	</td>
</tr>
<!-- ENDIF -->

Предпросмотр списка прикрепленных файлов перед публикацией товара на витрину.

В market.preview.tpl:

<!-- IF {PRD_ID|att_count('market',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRD_ID|att_display('market',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод прикрепленных файлов на странице товара:

В market.tpl:

<!-- IF {PRD_ID|att_count('market',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRD_ID|att_display('market',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод изображений в списках (категориях) товаров:

В market.list.tpl:

<!-- IF {PRD_ROW_ID|att_count('market',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('market',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках товаров на главной:

В market.index.tpl:

<!-- IF {PRD_ROW_ID|att_count('market',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('market',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках товаров в профиле:

В market.userdetails.tpl:

<!-- IF {PRD_ROW_ID|att_count('market',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('market',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Модуль folio freelance

Для прикрепления файлов при добавлении работы в портфолио:

В folio.add.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PHP|att_filebox('folio', 0)}
	</td>
</tr>
<!-- ENDIF -->

Для прикрепления файлов к редактируемой работе в портфолио.

В folio.edit.tpl:

<!-- IF {PHP|cot_auth('plug', 'attacher', 'W')} -->
<tr>
	<td>{PHP.L.Files}:</td>
	<td>
		{PRDEDIT_FORM_ID|att_filebox('folio', $this)}
	</td>
</tr>
<!-- ENDIF -->

Предпросмотр списка прикрепленных файлов перед публикацией работы в портфолио.

В folio.preview.tpl:

<!-- IF {PRD_ID|att_count('folio',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRD_ID|att_display('folio',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод прикрепленных файлов на странице работы в портфолио:

В folio.tpl:

<!-- IF {PRD_ID|att_count('folio',$this)} > 0 -->
<div data-att-display="all">
	<h3>{PHP.L.att_attachments}</h3>
	{PRD_ID|att_display('folio',$this,'','attacher.display','all')}
</div>
<!-- ENDIF -->

Вывод изображений в списках (категориях) работ портфолио:

В folio.list.tpl:

<!-- IF {PRD_ROW_ID|att_count('folio',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('folio',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках работ портфолио на главной:

В folio.index.tpl:

<!-- IF {PRD_ROW_ID|att_count('folio',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('folio',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вывод изображений в списках работ портфолио в профиле:

В folio.userdetails.tpl:

<!-- IF {PRD_ROW_ID|att_count('folio',$this,'','images')} > 0 -->
<div>
	<a href="{PRD_ROW_URL}" title="{PRD_ROW_SHORTTITLE}">
		<img src="{PRD_ROW_ID|att_get('folio',$this,'')|att_thumb($this,200,160,'crop',false)}" alt="{PRD_ROW_SHORTTITLE}">
	</a>
</div>
<!-- ENDIF -->

Вышеприведенный код для интеграции дан в качестве примера. Вариантов может быть значительно больше. Плагин attacherfreelance служит лишь мостиком между расширениями биржи фриланса и API плагина attacher, с помощью которого и работают вышеописанные примеры. Поэтому смотрите мануалы по функциям плагина.

Файлы и медиа: «Attacherfreelance - плагин Cotonti»

Если вам была полезна эта информация, будьте добры, поделитесь ею в социальных сетях. Это послужит дополнительным мотиватором, стимулом к дальнейшим публикациям на cmscot.net статей на интересующие вас темы.
Cmscot

Близкие по теме «Attacherfreelance - плагин Cotonti»

Нет записей