function create_fields () { // Load CmsPage related model (fix this...) // TODO: find out a way to get the app module through the model $app = Frix::model('cms', 'CmsPage'); $this->add_fields(array( 'parent' => new ForeignKey('Parent Page', array('model_name' => 'CmsPage', 'null' => True)), 'name' => new CharField('Name', array('length' => 80)), 'file' => new FileField('File', array('length' => 100, 'path' => 'cms/file')), // 'visible' => new BooleanField('Visible'), )); }
function page ($path, $context = array()) { $cms_page = self::get_page($path); $slug = $cms_page->slug; $pk_lookup = array('parent' => $cms_page->get_pk()); Frix::model('cms', 'CmsFile'); Frix::model('cms', 'CmsImage'); Frix::model('cms', 'CmsVideo'); $context += array( 'cms_page' => $cms_page, 'cms_files' => CmsFile::meta()->all($pk_lookup), 'cms_images' => CmsImage::meta()->all($pk_lookup), 'cms_videos' => CmsVideo::meta()->all($pk_lookup), 'cms_pages' => CmsPage::meta()->filter(array('visible' => True))->all($pk_lookup), 'body_attrs' => array('id' => $slug), ); $t = new Template('cms/custom/' . $slug, 'cms/page'); echo $t->render($context); }
<? Frix::model('cms', 'CmsFile'); class CmsImage extends CmsFile { function setup ($meta) { $meta->verbose_name = 'Image'; } function create_fields () { parent::create_fields(); $this->add_field( 'file', new ImageField('File', array('length' => 100, 'path' => 'cms/image')) ); } static public function meta() { return ModelMeta::meta(get_class()); } } ?>
<? // Get models Frix::model('cms', 'CmsPage'); Frix::model('cms', 'CmsFile'); Frix::model('cms', 'CmsImage'); Frix::model('cms', 'CmsVideo'); Frix::model('cms', 'CmsMenu'); Frix::model('cms', 'CmsMenuItem'); class CmsPageOptions extends AdminOptions { public $inlines = array('CmsFile', 'CmsImage', 'CmsVideo'); public $list_display = array('title', 'slug', 'visible'); public $custom_position = 'pos'; } class CmsMenuOptions extends AdminOptions { public $inlines = array('CmsMenuItem'); } // Register Frix::app('admin')->register('CmsPage', 'CmsPageOptions'); Frix::app('admin')->register('CmsMenu', 'CmsMenuOptions'); ?>
<? // Get models Frix::model('auth', 'AuthUser'); class AuthUserOptions extends AdminOptions { public $list_display = array('username', 'email', 'first_name', 'last_name'); public $can_add = false; public $can_delete = false; // Change an existent object function change_view ($instance, $data, &$context) { if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->input_data = $data; // Trying to change password? if ($data['password']) { // Checks if passwords match if ($data['password'] == $data['password_conf']) { // Use AuthUser::set_password to change the password $instance->set_password($data['password']); } else { $context['msg'] = 'Password confirmation does not match.'; $context['msg_type'] = 'error'; }
<? // Get models Frix::model('settings', 'SettingsProperty'); class SettingsPropertyOptions extends AdminOptions { public $list_display = array('name', 'value'); public $can_add = false; public $can_delete = false; public $can_change = true; } // Register Frix::app('admin')->register('SettingsProperty', 'SettingsPropertyOptions'); ?>