Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 static function imageExists($uri)
 {
     if ($path = formImageField::getImagePath($uri)) {
         return is_file($path);
     }
 }
Ejemplo n.º 3
0
 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());
     }
 }