Кастомизация административной части на примере модуля emarket

Материал из Umicms
Перейти к:навигация, поиск

В данной статье будет рассказано о том, каким образом можно добавить возможность редактирования данных "Незарегистрированного покупателя" при просмотре заказа.

Добавим сначала сам метод, который будет отвечать за отображение и редактированные данных о покупателе. В папке /classes/modules/emarket/ в файл __custom_adm.php добавим следующий метод:

	public function delivery_customer_edit() {
			$object = $this->expectObject('param0');
			$mode = (string) getRequest('param1');
			$inputData = array(
				'object' => $object,
				'allowed-element-types' => array('customer')
			);
			if($mode == "do") {
				$object = $this->saveEditedObjectData($inputData);				
				$this->chooseRedirect();
			}
			$this->setDataType("form");
			$this->setActionType("modify");
			$data = $this->prepareData($inputData, "object");
			$this->setData($data);
			return $this->doData();
		}

Метод создан на основе delivery_edit(), из файла __admin_delivery.php. В этой же папке добавим файл permissions.custom.php следующего содержания:

<?php
$permissions = array('control' => array('delivery_customer_edit'));
?>

Далее необходимо отредактировать XSL-шаблоны административной части. В папке /styles/skins/mac/data/modules/emarket/ создадим копию файла form.modify.xsl и переименуем в form.modify.custom.xsl. Откроем на редактирование файл form.modify.custom.xsl, заменим строку:

<xsl:include href="order-edit.xsl" />

на:

<xsl:include href="order-edit.custom.xsl" />

также добавим два шаблона:

      <xsl:template match="group[@name = 'delivery']" mode="form-modify" />
      
      <!-- Customer -->
      <xsl:template match="/result[@method = 'delivery_customer_edit']/data/object" mode="form-modify">
        <xsl:apply-templates select="properties/group" mode="form-modify">
        <xsl:with-param name="show-name"><xsl:text>0</xsl:text></xsl:with-param>
        </xsl:apply-templates>
      </xsl:template>


Создадим копию файла order-edit.xsl и переименуем в order-edit.custom.xsl. Откроем на редактирование файл order-edit.custom.xsl. Изменим шаблон:

<!-- Информация о заказчике -->
<xsl:apply-templates select="$order-info/customer" />

на:

<!-- Информация о заказчике -->
<xsl:apply-templates select="$order-info/customer">
   <xsl:with-param name="customer-id"><xsl:value-of select="$customer-id"/></xsl:with-param>		
</xsl:apply-templates>

далее необходимо изменить шаблон:

<xsl:template match="customer">
...
...
...
</xsl:template>

на:

<xsl:template match="customer">
  <xsl:param name="customer-id"/>
  <div class="panel properties-group">
    <div class="header">
      <span>
        <xsl:text>&label-order-customer-group;</xsl:text>
      </span>
      <div class="l" />
      <div class="r" />
    </div>
    <div class="content">
      <div>
        <a href="/admin/emarket/delivery_customer_edit/{$customer-id}/">Редактировать</a>
      </div>
      <table class="tableContent">
        <xsl:apply-templates select="object/properties/group/property" mode="customer-info" />
      </table>
      <xsl:call-template name="std-form-buttons" />
    </div>
  </div>
</xsl:template>

Теперь при просмотре заказа, в блоке "Информация о покупателе" можно будет перейти по ссылке "Редактировать", в новом окне откроются данные о покупателе в режиме редактирования.