public function saveAjaxAction(\Difra\Param\AjaxInt $perpage, \Difra\Param\AjaxString $imgSizes, \Difra\Param\AjaxString $format, \Difra\Param\AjaxCheckbox $waterOn, \Difra\Param\AjaxCheckbox $waterPreviewOn, \Difra\Param\AjaxString $waterText = null, \Difra\Param\AjaxFile $waterFile = null) { $imgSizes2 = explode("\n", str_replace("\r", '', $imgSizes)); $imgSizes3 = []; foreach ($imgSizes2 as $str) { $arr = explode(' ', $str); if (sizeof($arr) != 3 or !ctype_alpha($arr[0]) or !ctype_digit($arr[1]) or !ctype_digit($arr[2]) or $arr[0] == 'f' or isset($imgSizes3[$arr[0]]) or !$arr[1] or !$arr[2]) { $this->ajax->invalid('imgSizes'); return; } $imgSizes3[$arr[0]] = [(int) $arr[1], (int) $arr[2]]; } $conf = \Difra\Config::getInstance(); $conf->setValue('gallery', 'perpage', $perpage->val()); $conf->setValue('gallery', 'imgSizes', $imgSizes3); $conf->setValue('gallery', 'watermark', $waterOn->val()); $conf->setValue('gallery', 'waterOnPreview', $waterPreviewOn->val()); $waterText = !is_null($waterText) ? $waterText->val() : ''; $conf->setValue('gallery', 'waterText', $waterText); $conf->setValue('gallery', 'format', $format->val()); if (!is_null($waterFile)) { $path = DIR_DATA . 'gallery/'; @mkdir($path, 0777, true); file_put_contents($path . 'watermark.png', \Difra\Libs\Images::convert($waterFile->val(), 'png')); } $this->ajax->notify($this->locale->getXPath('gallery/adm/config/saved')); }
public function savesettingsAjaxAction(\Difra\Param\AjaxString $consumerKey, \Difra\Param\AjaxString $consumerSecret, \Difra\Param\AjaxString $oauthToken, \Difra\Param\AjaxString $oauthSecret, \Difra\Param\AjaxCheckbox $postToTwitter) { $oAuthArray = ['consumerKey' => $consumerKey->val(), 'consumerSecret' => $consumerSecret->val(), 'accessToken' => $oauthToken->val(), 'accessTokenSecret' => $oauthSecret->val(), 'postToTwitter' => $postToTwitter->val()]; \Difra\Config::getInstance()->set('oAuth', $oAuthArray); \Difra\Ajaxer::refresh(); \Difra\Ajaxer::notify(\Difra\Locales::getInstance()->getXPath('twitter/adm/oAuth/settingsSaved')); }
public function saveAjaxAction(\Difra\Param\AjaxString $name, \Difra\Param\AjaxString $description, \Difra\Param\AjaxCheckbox $hidden, \Difra\Param\AjaxInt $id = null) { if ($id) { \Difra\Plugins\Gallery::getInstance()->albumUpdate($id->val(), $name->val(), $description->val(), !$hidden->val()); } else { \Difra\Plugins\Gallery::getInstance()->albumAdd($name->val(), $description->val(), !$hidden->val()); } $this->ajax->redirect('/adm/gallery/albums/'); }
public function deleteAjaxAction(\Difra\Param\AnyInt $id, \Difra\Param\AjaxCheckbox $confirm = null) { if (!$confirm or !$confirm->val()) { $cat = \Difra\Plugins\Catalog\Category::get($id->val()); $this->ajax->display('<span>' . $this->locale->getXPath('catalog/adm/category-delete-confirm-1') . htmlspecialchars($cat->getName()) . $this->locale->getXPath('catalog/adm/category-delete-confirm-2') . '</span>' . '<form action="/adm/catalog/categories/delete/' . $id . '" method="post" class="ajaxer">' . '<input type="hidden" name="confirm" value="1"/>' . '<input type="submit" value="Да"/>' . '<a href="#" onclick="ajaxer.close(this)" class="button">Нет</a>' . '</form>'); } else { \Difra\Plugins\Catalog::getInstance()->deleteCategory($id->val()); $this->ajax->refresh(); } }
/** * Delete page * @param \Difra\Param\AnyInt $id * @param \Difra\Param\AjaxCheckbox $confirm */ public function deleteAjaxAction(\Difra\Param\AnyInt $id, \Difra\Param\AjaxCheckbox $confirm = null) { if ($confirm and $confirm->val()) { \Difra\Plugins\CMS\Page::get($id->val())->delete(); Ajaxer::close(); Ajaxer::redirect('/adm/content/pages'); return; } $page = \Difra\Plugins\CMS\Page::get($id->val()); Ajaxer::display('<span>' . \Difra\Locales::get('cms/adm/delete-page-confirm-1') . $page->getTitle() . \Difra\Locales::get('cms/adm/delete-page-confirm-2') . '</span>' . '<form action="/adm/content/pages/delete/' . $id . '" method="post" class="ajaxer">' . '<input type="hidden" name="confirm" value="1"/>' . '<input type="submit" value="Да"/>' . '<a href="#" onclick="ajaxer.close(this)" class="button">Нет</a>' . '</form>'); }
/** * Edit user (submit) * @param Param\AnyInt $id * @param Param\AjaxEmail $email * @param Param\AjaxCheckbox $change_pw * @param Param\AjaxString|null $new_pw * @param Param\AjaxData|null $fieldName * @param Param\AjaxData|null $fieldValue */ public function saveAjaxAction(Param\AnyInt $id, Param\AjaxEmail $email, Param\AjaxCheckbox $change_pw, Param\AjaxString $new_pw = null, Param\AjaxData $fieldName = null, Param\AjaxData $fieldValue = null) { $user = User::getById($id->val()); $user->setEmail($email->val()); // $userData['addonFields'] = !is_null($fieldName) ? $fieldName->val() : null; // $userData['addonValues'] = !is_null($fieldValue) ? $fieldValue->val() : null; if ($change_pw->val() and $new_pw and $new_pw->val()) { $user->setPassword($new_pw->val()); Ajaxer::notify(Locales::get('auth/adm/userDataSavedPassChanged')); } else { Ajaxer::notify(Locales::get('auth/adm/userDataSaved')); } Ajaxer::refresh(); }
/** * User login * @param Difra\Param\AjaxString $login * @param Difra\Param\AjaxString $password * @param Difra\Param\AjaxCheckbox $rememberMe */ public function indexAjaxAction(Param\AjaxString $login, Param\AjaxString $password, Param\AjaxCheckbox $rememberMe) { try { User::loginByPassword($login->val(), $password->val(), $rememberMe->val() == 1 ? true : false); $this->afterLoginAjax(); } catch (\Difra\Exception $ex) { switch ($error = $ex->getMessage()) { case User::LOGIN_BADPASS: Ajaxer::status('password', Locales::get('auth/login/' . $error), 'problem'); break; default: Ajaxer::status('login', Locales::get('auth/login/' . $error), 'problem'); } } }
public function savesettingsAjaxAction(\Difra\Param\AjaxCheckbox $onLine, \Difra\Param\AjaxString $title, \Difra\Param\AjaxString $link, \Difra\Param\AjaxInt $ttl, \Difra\Param\AjaxInt $size, \Difra\Param\AjaxCheckbox $image, \Difra\Param\AjaxCheckbox $cache, \Difra\Param\AjaxString $desc = null, \Difra\Param\AjaxString $copyright = null, \Difra\Param\AjaxFile $rsslogo = null) { $settingsArray = ['onLine' => $onLine->val(), 'title' => $title->val(), 'link' => $link->val(), 'ttl' => $ttl->val(), 'size' => $size->val(), 'image' => $image->val(), 'cache' => $cache->val()]; if (!is_null($desc)) { $settingsArray['description'] = $desc->val(); } if (!is_null($copyright)) { $settingsArray['copyright'] = $copyright->val(); } if (!is_null($rsslogo)) { $settingsArray['logo'] = $rsslogo; } Difra\Plugins\Rss::saveSettings($settingsArray); $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('rss/adm/saved')); $this->ajax->refresh(); }
public function saveAjaxAction(\Difra\Param\AjaxString $title, \Difra\Param\AjaxString $pubDate, \Difra\Param\AjaxString $viewDate, \Difra\Param\AjaxCheckbox $visible, \Difra\Param\AjaxCheckbox $important, \Difra\Param\AjaxHTML $body, \Difra\Param\AjaxString $stopDate = null, \Difra\Param\AjaxHTML $announcement = null, \Difra\Param\AjaxString $sourceName = null, \Difra\Param\AjaxString $sourceURL = null, \Difra\Param\AjaxInt $id = null) { $data = ['title' => $title->val(), 'pubDate' => $pubDate->val(), 'viewDate' => $viewDate->val(), 'visible' => $visible->val(), 'important' => $important->val(), 'body' => $body]; $data['stopDate'] = !is_null($stopDate) ? $stopDate->val() : null; $data['announcement'] = !is_null($announcement) ? $announcement : null; $data['sourceName'] = !is_null($sourceName) ? $sourceName->val() : null; $data['sourceURL'] = !is_null($sourceURL) ? $sourceURL->val() : null; $data['id'] = !is_null($id) ? $id->val() : null; \Difra\Plugins\News::getInstance()->addNews($data); if (!is_null($id)) { $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('news/adm/updated')); } else { $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('news/adm/add/added')); } $this->ajax->redirect('/adm/news/'); }
public function updateAjaxAction(\Difra\Param\AjaxString $title, \Difra\Param\AjaxString $eventDate, \Difra\Param\AjaxString $beginDate, \Difra\Param\AjaxInt $priorityValue, \Difra\Param\AjaxCheckbox $visible, \Difra\Param\AjaxSafeHTML $shortDescription, \Difra\Param\AjaxInt $id, \Difra\Param\AjaxSafeHTML $description = null, \Difra\Param\AjaxInt $group = null, \Difra\Param\AjaxString $endDate = null, \Difra\Param\AjaxFile $eventImage = null) { $data = ['title' => $title->val(), 'eventDate' => $eventDate->val(), 'beginDate' => $beginDate->val(), 'id' => $id->val(), 'priority' => $priorityValue->val(), 'visible' => $visible->val(), 'shortDescription' => $shortDescription->val()]; $data['description'] = is_null($description) ? null : $description->val(); $data['group'] = is_null($group) ? null : $group->val(); $data['endDate'] = is_null($endDate) ? null : $endDate->val(); // из админки пока ставим так, потом добавим выбор юзера. $data['user'] = 1; $Announcements = \Difra\Plugins\Announcements::getInstance(); // апдейтим анонс $eventId = $Announcements->create($data); if (is_null($eventId)) { $this->ajax->error(\Difra\Locales::getInstance()->getXPath('announcements/adm/notify/updateError')); return; } if (!is_null($eventImage)) { $Announcements->saveImage($eventId, $eventImage->val()); } \Difra\Libs\Cookies::getInstance()->notify(\Difra\Locales::getInstance()->getXPath('announcements/adm/notify/goodUpdate')); $this->ajax->redirect('/adm/announcements/'); }
public function saveAjaxAction(\Difra\Param\AjaxInt $maxdepth, \Difra\Param\AjaxInt $perpage, \Difra\Param\AjaxString $imgSizes, \Difra\Param\AjaxCheckbox $hideempty, \Difra\Param\AjaxCheckbox $allownoimage, \Difra\Param\AjaxCheckbox $usescale) { $imgSizes2 = explode("\n", str_replace("\r", '', $imgSizes)); $imgSizes3 = []; foreach ($imgSizes2 as $str) { $arr = explode(' ', $str); if (sizeof($arr) != 3 or !ctype_alpha($arr[0]) or !ctype_digit($arr[1]) or !ctype_digit($arr[2]) or $arr[0] == 'f' or isset($imgSizes3[$arr[0]]) or !$arr[1] or !$arr[2]) { $this->ajax->invalid('imgSizes'); return; } $imgSizes3[$arr[0]] = [(int) $arr[1], (int) $arr[2]]; } $conf = \Difra\Config::getInstance(); $conf->setValue('catalog', 'maxdepth', $maxdepth->val()); $conf->setValue('catalog', 'perpage', $perpage->val()); $conf->setValue('catalog', 'hideempty', $hideempty->val()); $conf->setValue('catalog', 'imgSizes', $imgSizes3); $conf->setValue('catalog', 'allownoimage', $allownoimage->val()); $conf->setValue('catalog', 'usescale', $usescale->val()); $this->ajax->notify($this->locale->getXPath('catalog/adm/config/saved')); }
/** * Registration form submit (registration page version) * @param AjaxCheckbox $accept * @param AjaxCheckbox $redirect * @param AjaxString|null $email * @param AjaxString|null $password1 * @param AjaxString|null $password2 * @param AjaxString|null $login * @param AjaxString|null $capcha * @throws Exception */ public function submitAjaxAction(AjaxCheckbox $accept, AjaxCheckbox $redirect, AjaxString $email = null, AjaxString $password1 = null, AjaxString $password2 = null, AjaxString $login = null, AjaxString $capcha = null) { $register = new Users\Register(); $register->setEmail($email); $register->setLogin($login); $register->setPassword1($password1); $register->setPassword2($password2); $register->setCaptcha($capcha); if (!$register->validate()) { $register->callAjaxerEvents(); return; } // EULA if (!$accept->val() and \Difra\Config::getInstance()->getValue('auth', 'eula')) { $this->root->appendChild($this->xml->createElement('eula')); Ajaxer::display(View::render($this->xml, 'auth-ajax', true)); return; } $register->register(); $this->afterSuccess(); }
public function test_CheckBox() { $cb1 = new \Difra\Param\AjaxCheckbox('on'); $this->assertTrue($cb1->val()); $this->assertEquals((string) $cb1, '1'); $cb2 = new \Difra\Param\AjaxCheckbox(); $this->assertFalse($cb2->val()); $this->assertEquals((string) $cb2, ''); $this->assertEquals(\Difra\Param\AjaxCheckbox::getSource(), 'ajax'); $this->assertTrue(\Difra\Param\AjaxCheckbox::isNamed()); $this->assertTrue(\Difra\Param\AjaxCheckbox::isAuto()); }
/** * Delete menu element * @param Difra\Param\AnyInt $id * @param Difra\Param\AjaxCheckbox $confirm */ public function deleteAjaxAction(\Difra\Param\AnyInt $id, \Difra\Param\AjaxCheckbox $confirm = null) { if (!$confirm or !$confirm->val()) { \Difra\Ajaxer::display('<span>' . \Difra\Locales::get('cms/adm/menuitem/delete-item-confirm') . '</span>' . '<form action="/adm/content/menu/delete/' . $id . '" method="post" class="ajaxer">' . '<input type="hidden" name="confirm" value="1"/>' . '<input type="submit" value="Да"/>' . '<a href="#" onclick="ajaxer.close(this)" class="button">Нет</a>' . '</form>'); } else { \Difra\Plugins\CMS\MenuItem::get($id->val())->delete(); \Difra\Ajaxer::refresh(); \Difra\Ajaxer::close(); } }
/** * Save typograph settings * @param \Difra\Param\AjaxCheckbox $spaceAfterShortWord * @param \Difra\Param\AjaxInt $lengthShortWord * @param \Difra\Param\AjaxCheckbox $spaceBeforeLastWord * @param \Difra\Param\AjaxInt $lengthLastWord * @param \Difra\Param\AjaxCheckbox $spaceAfterNum * @param \Difra\Param\AjaxCheckbox $spaceBeforeParticles * @param \Difra\Param\AjaxCheckbox $delRepeatSpace * @param \Difra\Param\AjaxCheckbox $delSpaceBeforePunctuation * @param \Difra\Param\AjaxCheckbox $delSpaceBeforeProcent * @param \Difra\Param\AjaxCheckbox $doReplaceBefore * @param \Difra\Param\AjaxCheckbox $doReplaceAfter * @param \Difra\Param\AjaxCheckbox $doMacros */ public function saveAjaxAction(\Difra\Param\AjaxCheckbox $spaceAfterShortWord, \Difra\Param\AjaxInt $lengthShortWord, \Difra\Param\AjaxCheckbox $spaceBeforeLastWord, \Difra\Param\AjaxInt $lengthLastWord, \Difra\Param\AjaxCheckbox $spaceAfterNum, \Difra\Param\AjaxCheckbox $spaceBeforeParticles, \Difra\Param\AjaxCheckbox $delRepeatSpace, \Difra\Param\AjaxCheckbox $delSpaceBeforePunctuation, \Difra\Param\AjaxCheckbox $delSpaceBeforeProcent, \Difra\Param\AjaxCheckbox $doReplaceBefore, \Difra\Param\AjaxCheckbox $doReplaceAfter, \Difra\Param\AjaxCheckbox $doMacros) { $settingsArray = ['spaceAfterShortWord' => $spaceAfterShortWord->val(), 'lengthShortWord' => $lengthShortWord->val(), 'spaceBeforeLastWord' => $spaceBeforeLastWord->val(), 'lengthLastWord' => $lengthLastWord->val(), 'spaceAfterNum' => $spaceAfterNum->val(), 'spaceBeforeParticles' => $spaceBeforeParticles->val(), 'delRepeatSpace' => $delRepeatSpace->val(), 'delSpaceBeforePunctuation' => $delSpaceBeforePunctuation->val(), 'delSpaceBeforeProcent' => $delSpaceBeforeProcent->val(), 'doReplaceBefore' => $doReplaceBefore->val(), 'doReplaceAfter' => $doReplaceAfter->val(), 'doMacros' => $doMacros->val()]; \Difra\Config::getInstance()->set('typograph', $settingsArray); $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('adm/typograph/saved')); }
public function updateAjaxAction(\Difra\Param\AjaxString $title, \Difra\Param\AjaxString $eventDate, \Difra\Param\AjaxString $beginDate, \Difra\Param\AjaxInt $priorityValue, \Difra\Param\AjaxCheckbox $visible, \Difra\Param\AjaxInt $id, \Difra\Param\AjaxHTML $description, \Difra\Param\AjaxInt $group = null, \Difra\Param\AjaxString $shortDescription = null, \Difra\Param\AjaxString $endDate = null, \Difra\Param\AjaxFile $eventImage = null, \Difra\Param\AjaxData $additionalField = null, \Difra\Param\AjaxString $fromEventDate = null, \Difra\Param\AjaxInt $category = null, \Difra\Param\AjaxString $scheduleName = null, \Difra\Param\AjaxData $scheduleField = null, \Difra\Param\AjaxData $scheduleValue = null, \Difra\Param\AjaxInt $location = null, Param\AjaxInt $userId = null) { $data = ['title' => $title->val(), 'eventDate' => $eventDate->val(), 'beginDate' => $beginDate->val(), 'id' => $id->val(), 'priority' => $priorityValue->val(), 'visible' => $visible->val(), 'description' => $description]; $data['shortDescription'] = is_null($shortDescription) ? null : $shortDescription->val(); $data['group'] = is_null($group) ? null : $group->val(); $data['endDate'] = is_null($endDate) ? null : $endDate->val(); $data['category'] = is_null($category) ? null : $category->val(); $data['fromEventDate'] = is_null($fromEventDate) ? null : $fromEventDate->val(); $data['location'] = is_null($location) ? null : $location->val(); if (is_null($data['fromEventDate']) || $data['fromEventDate'] == '' || $data['fromEventDate'] == 'null') { $data['fromEventDate'] = $eventDate->val(); } // из админки пока ставим так, потом добавим выбор юзера. if (!is_null($userId)) { $data['user'] = $userId->val(); } else { $data['user'] = 1; } $Announcements = \Difra\Plugins\Announcements::getInstance(); // апдейтим анонс $eventId = $Announcements->create($data); if (is_null($eventId)) { $this->ajax->error(\Difra\Locales::getInstance()->getXPath('announcements/adm/notify/updateError')); return; } // сохраняем дополнительные поля if (!is_null($additionalField)) { \Difra\Plugins\Announcements\Additionals::saveData($eventId, $additionalField->val()); } if (!is_null($eventImage)) { $Announcements->saveImage($eventId, $eventImage); } // смотрим есть ли расписание if (!is_null($scheduleField) && !is_null($scheduleValue)) { $scheduleName = !is_null($scheduleName) ? $scheduleName->val() : null; $Announcements->saveSchedules($eventId, $scheduleName, $scheduleField->val(), $scheduleValue->val()); } $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('announcements/adm/notify/goodUpdate')); $this->ajax->redirect('/adm/announcements/'); }