Кастомизация административной части на примере модуля 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>
Теперь при просмотре заказа, в блоке "Информация о покупателе" можно будет перейти по ссылке "Редактировать", в новом окне откроются данные о покупателе в режиме редактирования.
