コード例 #1
0
ファイル: Views.php プロジェクト: hbasria/pjango
 function app_model_settings($request, $app_label = false, $model = false)
 {
     $templateArr = array('current_admin_menu' => $app_label, 'current_admin_submenu' => $model, 'current_admin_submenu2' => 'Settings', 'title' => __(sprintf('%s %s Settings', $app_label, $model)));
     $coreApps = array('Post');
     $app_label0 = $app_label;
     if (in_array($app_label, $coreApps)) {
         $app_label = sprintf('Pjango\\Contrib\\%s', $app_label);
     }
     $contentType = ContentType::get_for_model($model, $app_label);
     $formClass = sprintf('%s\\Forms\\%sSettingsForm', $app_label, $model);
     $formData = array();
     $ignoredSettings = array('is_active', 'title', 'show_title', 'category_id', 'content');
     $settings = Doctrine_Query::create()->from('Settings o')->where('o.category = ? AND o.site_id = ? ', array($app_label, SITE_ID))->fetchArray();
     foreach ($settings as $settingsValue) {
         $formData[$settingsValue['name']] = $settingsValue['value'];
     }
     if (class_exists('PageLayout')) {
         $pageLayout = Doctrine_Query::create()->from('PageLayout o')->where('o.site_id = ? AND o.content_type_id = ?', array(SITE_ID, $contentType->id))->fetchOne();
         if ($pageLayout) {
             $formData = array_merge($formData, $pageLayout->toArray());
         }
     }
     if ($request->POST) {
         $form = new $formClass($request->POST);
         try {
             if (!$form->is_valid()) {
                 throw new Exception(pjango_gettext('There are some errors, please correct them below.'));
             }
             $formData = $form->cleaned_data();
             if (class_exists('PageLayout')) {
                 if (!$pageLayout) {
                     $pageLayout = new PageLayout();
                 }
                 $pageLayout->fromArray($formData);
                 $pageLayout->content_type_id = $contentType->id;
                 $pageLayout->site_id = SITE_ID;
                 $pageLayout->save();
             }
             foreach ($formData as $key => $value) {
                 if (in_array($key, $ignoredSettings)) {
                     unset($formData[$key]);
                 }
             }
             Settings::saveFromArray($app_label, $formData);
             Messages::Info('The operation completed successfully');
             HttpResponseRedirect(sprintf('/admin/%s/%s/settings/', $app_label0, $model));
         } catch (Exception $e) {
             Messages::Error($e->getMessage());
         }
     }
     if (!$form) {
         $form = new $formClass($formData);
     }
     $templateArr['addchange_form'] = $form;
     render_to_response('admin/addchange.html', $templateArr);
 }