function settings($action) { if (($xml = $this->getDataXML()) && ($e = $xml->getElementById('content_form_settings'))) { $form = new form($e); //размер превью if (($ffh = $form->getField('previewSizeH')) && ($ffv = $form->getField('previewSizeV')) && ($ffMaxPrev = $form->getField('previewSizeMax')) && ($ffMaxImg = $form->getField('imgSizeMax'))) { $res = $this->query('form//field[@type="image"]/param[@preview]'); foreach ($res as $e) { $ffi = new formImageField($e); switch ($action) { case 'update': case 'apply_update': $ffi->setPreviewSize(intval(param('previewSizeH')), intval(param('previewSizeV')), intval(param('previewSizeMax'))); $ffi->getXML()->save(); break; default: if (is_array($s = $ffi->getPreviewSize())) { $ffh->setValue($s['width']); $ffv->setValue($s['height']); $ffMaxPrev->setValue($s['max']); } break; } } $res = $this->query('form//field[@type="image"]/param[not(@preview)]'); foreach ($res as $e) { $ffi = new formImageField($e); switch ($action) { case 'update': case 'apply_update': $ffi->setPreviewSize(null, null, intval(param('imgSizeMax'))); $ffi->getXML()->save(); break; default: if (is_array($s = $ffi->getPreviewSize())) { $ffMaxImg->setValue($s['max']); } break; } } } } return parent::settings($action); }
function settings($action) { global $_out; if (($xml = $this->getDataXML()) && ($e = $xml->getElementById('article_form_settings'))) { $form = new form($e); $form->replaceURI(array('MODULE' => $this->getId(), 'SECTION' => $this->getSection()->getId())); //размер превью if (($ffh = $form->getField('previewSizeH')) && ($ffv = $form->getField('previewSizeV')) && ($ffMaxPrev = $form->getField('previewSizeMax')) && ($ffMaxImg = $form->getField('imgSizeMax'))) { if (($res = $this->query('form//field[@name="image"]/param[@preview]')) && ($e1 = $res->item(0)) && ($e2 = $res->item(1))) { $ffi1 = new formImageField($e1); $ffi2 = new formImageField($e2); switch ($action) { case 'update': case 'apply_update': $ffi1->setPreviewSize(intval(param('previewSizeH')), intval(param('previewSizeV')), intval(param('previewSizeMax'))); $ffi2->setPreviewSize(intval(param('previewSizeH')), intval(param('previewSizeV')), intval(param('previewSizeMax'))); $ffi1->getXML()->save(); break; default: if (is_array($s = $ffi1->getPreviewSize())) { $ffh->setValue($s['width']); $ffv->setValue($s['height']); $ffMaxPrev->setValue($s['max']); } break; } } if (($res = $this->query('form//field[@name="image"]/param[not(@preview)]')) && ($e1 = $res->item(0)) && ($e2 = $res->item(1))) { $ffi1 = new formImageField($e1); $ffi2 = new formImageField($e2); switch ($action) { case 'update': case 'apply_update': $ffi1->setPreviewSize(null, null, intval(param('imgSizeMax'))); $ffi2->setPreviewSize(null, null, intval(param('imgSizeMax'))); $ffi1->getXML()->save(); break; default: if (is_array($s = $ffi1->getPreviewSize())) { $ffMaxImg->setValue($s['max']); } break; } } } //поля формы $isImageField = $this->evaluate('count(./form//field[@name="image"])') == 2; $isUpdate = $action == 'update' || $action == 'apply_update'; $arFields = array('date', 'announce', 'article', 'image'); $arForms = array('article_form_edit', 'article_form_add'); $v = param('dataFields'); if (!is_array($v)) { $v = array(); } switch ($action) { case 'update': case 'apply_update': $xmlData = $this->getSection()->getXML(); foreach ($arFields as $fieldName) { foreach ($arForms as $formId) { $e = $this->query('form[@id="' . $formId . '"]//field[@name="' . $fieldName . '"]')->item(0); if (in_array($fieldName, $v)) { if (!$e && ($e = $xml->query('/data/form[@id="' . $formId . '"]//field[@name="' . $fieldName . '"]')->item(0)) && ($ePlace = $this->query('./form[@id="' . $formId . '"]/place[@for="' . $fieldName . '"]')->item(0))) { $ePlace->parentNode->insertBefore($xmlData->importNode($e), $ePlace); $ePlace->parentNode->removeChild($ePlace); if (($e = $xml->query('/data/rowlist[@id="article_list"]//col[@name="' . $fieldName . '"]')->item(0)) && ($ePlace = $this->query('./rowlist[@id="article_list"]//place[@for="' . $fieldName . '"]')->item(0))) { $ePlace->parentNode->insertBefore($xmlData->importNode($e), $ePlace); $ePlace->parentNode->removeChild($ePlace); } $xmlData->save(); if ($fieldName == 'announce') { param('announceType', 'textarea'); } } } elseif ($e) { $e->parentNode->insertBefore($xmlData->createElement('place', array('for' => $fieldName)), $e); $e->parentNode->removeChild($e); if ($e = $this->query('rowlist[@id="article_list"]//col[@name="' . $fieldName . '"]')->item(0)) { $e->parentNode->insertBefore($xmlData->createElement('place', array('for' => $fieldName)), $e); $e->parentNode->removeChild($e); } $xmlData->save(); } } } break; default: if ($ff = $form->getField('dataFields')) { $res = $ff->query('option[@value]'); foreach ($res as $e) { if ($this->query('form[@id="' . $arForms[0] . '"]//field[@name="' . $e->getAttribute('value') . '"]')->item(0)) { $e->setAttribute('checked', 'checked'); } } } } $isImageField = $this->evaluate('count(form//field[@name="image"])') == 2 && !(!$isImageField && $isUpdate); if (!$isImageField) { while ($ff = $form->getField('imgNum')) { $ff->remove(); } $arImgPropFields = array('previewSizeH', 'previewSizeV', 'previewSizeMax', 'imgSizeMax', 'hasTitle'); foreach ($arImgPropFields as $fieldName) { if ($ff = $form->getField($fieldName)) { $ff->remove(); } } } $isAnnounceField = $this->evaluate('count(form//field[@name="announce"])') == 2; if (!$isAnnounceField) { while ($ff = $form->getField('announceType')) { $ff->remove(); } } switch ($action) { case 'update': case 'apply_update': $form->save($_REQUEST); return; } $form->load(); if (($ff = $form->getField('includeContent')) && !$ff->getValue()) { $ff->setValue(0); } if (($ff = $form->getField('imgNum')) && !$ff->getValue()) { $ff->setValue(1); } if (($ff = $form->getField('listPageSize')) && !$ff->getValue()) { $ff->setValue(10); } if (($ff = $form->getField('pageSize')) && !$ff->getValue()) { $ff->setValue(10); } if (($ff = $form->getField('pageParam')) && !$ff->getValue()) { $ff->setValue('page'); } if (($ff = $form->getField('tplNameList')) && !$ff->getValue()) { $ff->setValue('articles'); } if (($ff = $form->getField('tplNameText')) && !$ff->getValue()) { $ff->setValue('articlesRow'); } $_out->addSectionContent($form->getRootElement()); } }