diff --git a/DATABASE 0.1.3 to 0.1.4.sql b/DATABASE 0.1.3 to 0.1.4.sql index 85c2363d..27aba413 100644 --- a/DATABASE 0.1.3 to 0.1.4.sql +++ b/DATABASE 0.1.3 to 0.1.4.sql @@ -39,3 +39,37 @@ ALTER TABLE `nf_awards` ADD CONSTRAINT `nf_awards_ibfk_1` FOREIGN KEY (`team_id`) REFERENCES `nf_teams` (`team_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `nf_awards_ibfk_2` FOREIGN KEY (`game_id`) REFERENCES `nf_games` (`game_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `nf_awards_ibfk_3` FOREIGN KEY (`image_id`) REFERENCES `nf_files` (`file_id`) ON DELETE CASCADE ON UPDATE CASCADE; +DROP TABLE IF EXISTS `nf_partners`; +CREATE TABLE IF NOT EXISTS `nf_partners` ( + `partner_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `logo_light` int(11) UNSIGNED DEFAULT NULL, + `logo_dark` int(11) UNSIGNED DEFAULT NULL, + `website` varchar(100) NOT NULL, + `facebook` varchar(100) NOT NULL, + `twitter` varchar(100) NOT NULL, + `code` varchar(50) NOT NULL, + `count` int(11) UNSIGNED NOT NULL, + `order` tinyint(6) UNSIGNED NOT NULL, + PRIMARY KEY (`partner_id`), + KEY `image_id` (`logo_light`), + KEY `logo_dark` (`logo_dark`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +DROP TABLE IF EXISTS `nf_partners_lang`; +CREATE TABLE IF NOT EXISTS `nf_partners_lang` ( + `partner_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `lang` varchar(5) NOT NULL, + `title` varchar(100) NOT NULL, + `description` text NOT NULL, + PRIMARY KEY (`partner_id`), + KEY `lang` (`lang`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +INSERT INTO `nf_settings_addons` VALUES('partners', 'module', '1'); +INSERT INTO `nf_settings_addons` VALUES('partners', 'widget', '1'); +INSERT INTO `nf_settings` VALUES('partners_logo_display', '', '', 'logo_dark', 'string'); +ALTER TABLE `nf_partners` + ADD CONSTRAINT `nf_partners_ibfk_1` FOREIGN KEY (`logo_light`) REFERENCES `nf_files` (`file_id`) ON DELETE SET NULL ON UPDATE SET NULL, + ADD CONSTRAINT `nf_partners_ibfk_2` FOREIGN KEY (`logo_dark`) REFERENCES `nf_files` (`file_id`) ON DELETE SET NULL ON UPDATE SET NULL; +ALTER TABLE `nf_partners_lang` + ADD CONSTRAINT `nf_partners_lang_ibfk_1` FOREIGN KEY (`partner_id`) REFERENCES `nf_partners` (`partner_id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `nf_partners_lang_ibfk_2` FOREIGN KEY (`lang`) REFERENCES `nf_settings_languages` (`code`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/DATABASE.sql b/DATABASE.sql index 102c8f5a..0d830cd0 100644 --- a/DATABASE.sql +++ b/DATABASE.sql @@ -197,6 +197,8 @@ CREATE TABLE IF NOT EXISTS `nf_files` ( -- INSERT INTO `nf_files` VALUES(1, 1, 'Sans-titre-2.jpg', './upload/news/categories/ubfuejdfooirqya0pyltfeklja4ew4sn.jpg', '2015-05-29 22:34:16'); +INSERT INTO `nf_files` VALUES(2, 1, 'logo.png', 'upload/partners/zwvmsjijfljaka4rdblgvlype1lnbwaw.png', '2016-05-07 16:51:53'); +INSERT INTO `nf_files` VALUES(3, 1, 'logo_black.png', 'upload/partners/y4ofwq2ekppwnfpmnrmnafeivszlg5bd.png', '2016-05-07 16:51:53'); -- -------------------------------------------------------- @@ -649,6 +651,57 @@ CREATE TABLE IF NOT EXISTS `nf_pages_lang` ( -- -------------------------------------------------------- +-- +-- Structure de la table `nf_partners` +-- + +DROP TABLE IF EXISTS `nf_partners`; +CREATE TABLE IF NOT EXISTS `nf_partners` ( + `partner_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(100) NOT NULL, + `logo_light` int(11) UNSIGNED DEFAULT NULL, + `logo_dark` int(11) UNSIGNED DEFAULT NULL, + `website` varchar(100) NOT NULL, + `facebook` varchar(100) NOT NULL, + `twitter` varchar(100) NOT NULL, + `code` varchar(50) NOT NULL, + `count` int(11) UNSIGNED NOT NULL, + `order` tinyint(6) UNSIGNED NOT NULL, + PRIMARY KEY (`partner_id`), + KEY `image_id` (`logo_light`), + KEY `logo_dark` (`logo_dark`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `nf_partners` +-- + +INSERT INTO `nf_partners` VALUES(1, 'neofrag', 2, 3, 'https://neofr.ag', 'https://www.facebook.com/NeoFrag-CMS-345511868808600/', 'https://twitter.com/NeoFragCMS', '', 1, 0); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `nf_partners_lang` +-- + +DROP TABLE IF EXISTS `nf_partners_lang`; +CREATE TABLE IF NOT EXISTS `nf_partners_lang` ( + `partner_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `lang` varchar(5) NOT NULL, + `title` varchar(100) NOT NULL, + `description` text NOT NULL, + PRIMARY KEY (`partner_id`), + KEY `lang` (`lang`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `nf_partners_lang` +-- + +INSERT INTO `nf_partners_lang` VALUES(1, 'fr', 'NeoFrag', 'NeoFrag est un CMS (système de gestion de contenu) à la fois puissant, compact et performant, pour créer votre site web orienté e-Sport !\r\n\r\n[b]C''est entièrement gratuit et personnalisable ![/b]\r\nPeu importe votre niveau dans le domaine du web, ce projet a pour but de vous proposer une solution clés en main pour créer votre site à l''aide d''interfaces modernes, personnalisables et évolutives pour correspondre à un maximum d''univers.'); + +-- -------------------------------------------------------- + -- -- Structure de la table `nf_search_keywords` -- @@ -739,6 +792,7 @@ INSERT INTO `nf_settings` VALUES('default_background_attachment', '', '', 'scrol INSERT INTO `nf_settings` VALUES('default_background_color', '', '', '#141d26', 'string'); INSERT INTO `nf_settings` VALUES('default_background_position', '', '', 'center top', 'string'); INSERT INTO `nf_settings` VALUES('default_background_repeat', '', '', 'no-repeat', 'string'); +INSERT INTO `nf_settings` VALUES('partners_logo_display', '', '', 'logo_dark', 'string'); -- -------------------------------------------------------- @@ -784,6 +838,8 @@ INSERT INTO `nf_settings_addons` VALUES('navigation', 'widget', '1'); INSERT INTO `nf_settings_addons` VALUES('news', 'module', '1'); INSERT INTO `nf_settings_addons` VALUES('news', 'widget', '1'); INSERT INTO `nf_settings_addons` VALUES('pages', 'module', '1'); +INSERT INTO `nf_settings_addons` VALUES('partners', 'module', '1'); +INSERT INTO `nf_settings_addons` VALUES('partners', 'widget', '1'); INSERT INTO `nf_settings_addons` VALUES('search', 'module', '1'); INSERT INTO `nf_settings_addons` VALUES('search', 'widget', '1'); INSERT INTO `nf_settings_addons` VALUES('settings', 'module', '1'); @@ -1351,6 +1407,20 @@ ALTER TABLE `nf_pages_lang` ADD CONSTRAINT `nf_pages_lang_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `nf_pages` (`page_id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `nf_pages_lang_ibfk_2` FOREIGN KEY (`lang`) REFERENCES `nf_settings_languages` (`code`) ON DELETE CASCADE ON UPDATE CASCADE; +-- +-- Contraintes pour la table `nf_partners` +-- +ALTER TABLE `nf_partners` + ADD CONSTRAINT `nf_partners_ibfk_1` FOREIGN KEY (`logo_light`) REFERENCES `nf_files` (`file_id`) ON DELETE SET NULL ON UPDATE SET NULL, + ADD CONSTRAINT `nf_partners_ibfk_2` FOREIGN KEY (`logo_dark`) REFERENCES `nf_files` (`file_id`) ON DELETE SET NULL ON UPDATE SET NULL; + +-- +-- Contraintes pour la table `nf_partners_lang` +-- +ALTER TABLE `nf_partners_lang` + ADD CONSTRAINT `nf_partners_lang_ibfk_1` FOREIGN KEY (`partner_id`) REFERENCES `nf_partners` (`partner_id`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `nf_partners_lang_ibfk_2` FOREIGN KEY (`lang`) REFERENCES `nf_settings_languages` (`code`) ON DELETE CASCADE ON UPDATE CASCADE; + -- -- Contraintes pour la table `nf_sessions` -- diff --git a/modules/partners/controllers/admin.php b/modules/partners/controllers/admin.php new file mode 100644 index 00000000..a77380fa --- /dev/null +++ b/modules/partners/controllers/admin.php @@ -0,0 +1,167 @@ +. +**************************************************************************/ + +class m_partners_c_admin extends Controller_Module +{ + public function index() + { + $this->load ->library('table') + ->add_columns(array( + array( + 'content' => function($data){ + return button_sort($data['partner_id'], 'admin/ajax/partners/sort.html'); + }, + 'size' => TRUE + ), + array( + 'title' => 'Nom', + 'content' => function($data){ + return $data['title']; + } + ), + array( + 'title' => 'Site internet', + 'content' => function($data){ + return ''.$data['website'].''; + } + ), + array( + 'title' => ''.icon('fa-line-chart').'', + 'content' => function($data){ + return $data['count']; + } + ), + array( + 'content' => array( + function($data){ + return button_edit('admin/partners/'.$data['partner_id'].'/'.$data['name'].'.html'); + }, + function($data){ + return button_delete('admin/partners/delete/'.$data['partner_id'].'/'.$data['name'].'.html'); + } + ), + 'size' => TRUE + ) + )) + ->data($this->model()->get_partners()) + ->no_data('Aucun partenaire'); + + return new Panel(array( + 'title' => 'Liste des partenaires', + 'icon' => 'fa-star-o', + 'content' => $this->table->display(), + 'footer' => button_add('admin/partners/add.html', 'Ajouter un partenaire') + )); + } + + public function add() + { + $this ->subtitle('Ajouter un partenaire') + ->load->library('form') + ->add_rules('partners') + ->add_submit($this('add')) + ->add_back('admin/partners.html'); + + if ($this->form->is_valid($post)) + { + $this->model()->add_partner($post['title'], + $post['logo_light'], + $post['logo_dark'], + $post['description'], + $post['website'], + $post['facebook'], + $post['twitter'], + $post['code']); + + //add_alert('success', $this('add_partner_success_message')); + + redirect('admin/partners.html'); + } + + return new Panel(array( + 'title' => 'Ajouter un partenaire', + 'icon' => 'fa-star-o', + 'content' => $this->form->display() + )); + } + + public function _edit($partner_id, $name, $logo_light, $logo_dark, $website, $facebook, $twitter, $count, $code, $title, $description) + { + $this ->subtitle($title) + ->load->library('form') + ->add_rules('partners', array( + 'title' => $title, + 'logo_light' => $logo_light, + 'logo_dark' => $logo_dark, + 'description' => $description, + 'website' => $website, + 'facebook' => $facebook, + 'twitter' => $twitter, + 'code' => $code + )) + ->add_submit($this('edit')) + ->add_back('admin/partners.html'); + + if ($this->form->is_valid($post)) + { + $this->model()->edit_partner( $partner_id, + $post['title'], + $post['logo_light'], + $post['logo_dark'], + $post['description'], + $post['website'], + $post['facebook'], + $post['twitter'], + $post['code']); + + //add_alert('success', $this('edit_partner_success_message')); + + redirect_back('admin/partners.html'); + } + + return new Panel(array( + 'title' => 'Éditer le partenaire', + 'icon' => 'fa-star-o', + 'content' => $this->form->display() + )); + } + + public function delete($partner_id, $title) + { + $this ->title('Supprimer le partenaire') + ->subtitle($title) + ->load->library('form') + ->confirm_deletion($this('delete_confirmation'), 'Êtes-vous sûr(e) de vouloir supprimer le partenaire '.$title.' ?'); + + if ($this->form->is_valid()) + { + $this->model()->delete_partner($partner_id); + + return 'OK'; + } + + echo $this->form->display(); + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/controllers/admin.php +*/ \ No newline at end of file diff --git a/modules/partners/controllers/admin_ajax.php b/modules/partners/controllers/admin_ajax.php new file mode 100644 index 00000000..55211cf3 --- /dev/null +++ b/modules/partners/controllers/admin_ajax.php @@ -0,0 +1,45 @@ +. +**************************************************************************/ + +class m_partners_c_admin_ajax extends Controller +{ + public function sort($partner_id, $position) + { + $partners = array(); + + foreach ($this->db->select('partner_id')->from('nf_partners')->where('partner_id !=', $partner_id)->order_by('order', 'partner_id')->get() as $partner) + { + $partners[] = $partner; + } + + foreach (array_merge(array_slice($partners, 0, $position, TRUE), array($partner_id), array_slice($partners, $position, NULL, TRUE)) as $order => $partner_id) + { + $this->db ->where('partner_id', $partner_id) + ->update('nf_partners', array( + 'order' => $order + )); + } + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/controllers/admin_ajax.php +*/ \ No newline at end of file diff --git a/modules/partners/controllers/admin_ajax_checker.php b/modules/partners/controllers/admin_ajax_checker.php new file mode 100644 index 00000000..ab68f663 --- /dev/null +++ b/modules/partners/controllers/admin_ajax_checker.php @@ -0,0 +1,45 @@ +. +**************************************************************************/ + +class m_partners_c_admin_ajax_checker extends Controller +{ + public function sort() + { + if (($check = $this->_check('id', 'position')) && $this->db->select('1')->from('nf_partners')->where('partner_id', $check['id'])->row()) + { + return $check; + } + + throw new Exception(NeoFrag::UNFOUND); + } + + private function _check() + { + if (!array_diff(func_get_args(), array_keys($args = array_intersect_key(post(), array_flip(func_get_args()))))) + { + return $args; + } + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/controllers/admin_ajax_checker.php +*/ \ No newline at end of file diff --git a/modules/partners/controllers/admin_checker.php b/modules/partners/controllers/admin_checker.php new file mode 100644 index 00000000..1fee1d46 --- /dev/null +++ b/modules/partners/controllers/admin_checker.php @@ -0,0 +1,49 @@ +. +**************************************************************************/ + +class m_partners_c_admin_checker extends Controller_Module +{ + public function _edit($partner_id, $name) + { + if ($partner = $this->model()->check_partner($partner_id, $name)) + { + return $partner; + } + + throw new Exception(NeoFrag::UNFOUND); + } + + public function delete($partner_id, $name) + { + $this->ajax(); + + if ($partner = $this->model()->check_partner($partner_id, $name)) + { + return array($partner['partner_id'], $partner['title']); + } + + throw new Exception(NeoFrag::UNFOUND); + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/teams/controllers/admin_checker.php +*/ \ No newline at end of file diff --git a/modules/partners/controllers/checker.php b/modules/partners/controllers/checker.php new file mode 100644 index 00000000..26b66a91 --- /dev/null +++ b/modules/partners/controllers/checker.php @@ -0,0 +1,43 @@ +. +**************************************************************************/ + +class m_partners_c_checker extends Controller_Module +{ + public function _partner($partner_id, $name) + { + if ($partner = $this->model()->check_partner($partner_id, $name)) + { + $this->db ->where('partner_id', $partner_id) + ->update('nf_partners', array( + 'count' => $partner['count'] + 1 + )); + + header('Location: '.$partner['website']); + exit; + } + + throw new Exception(NeoFrag::UNFOUND); + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/controllers/checker.php +*/ \ No newline at end of file diff --git a/modules/partners/controllers/index.php b/modules/partners/controllers/index.php new file mode 100644 index 00000000..a971d51f --- /dev/null +++ b/modules/partners/controllers/index.php @@ -0,0 +1,52 @@ +. +**************************************************************************/ + +class m_partners_c_index extends Controller_Module +{ + public function index() + { + $partners = $this->model()->get_partners(); + + if (!empty($partners)) + { + return new Panel(array( + 'title' => 'Nos partenaires', + 'icon' => 'fa-star-o', + 'content' => $this->load->view('index', array( + 'partners' => $partners + )) + )); + } + else + { + return new Panel(array( + 'title' => 'Nos partenaires', + 'icon' => 'fa-star-o', + 'style' => 'panel-info', + 'content' => '
Aucun partenaire
' + )); + } + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/controllers/index.php +*/ \ No newline at end of file diff --git a/modules/partners/forms/partners.php b/modules/partners/forms/partners.php new file mode 100644 index 00000000..91b1b5e3 --- /dev/null +++ b/modules/partners/forms/partners.php @@ -0,0 +1,97 @@ +. +**************************************************************************/ + +$rules = array( + 'title' => array( + 'label' => 'Nom', + 'value' => $title, + 'type' => 'text', + 'rules' => 'required', + 'size' => 'col-md-6' + ), + 'logo_light' => array( + 'label' => 'Logo clair', + 'value' => $logo_light, + 'type' => 'file', + 'upload' => 'partners', + 'info' => i18n('file_picture', file_upload_max_size() / 1024 / 1024), + 'check' => function($filename, $ext){ + if (!in_array($ext, array('gif', 'jpeg', 'jpg', 'png'))) + { + return i18n('select_image_file'); + } + }, + 'description' => 'Pour être affiché sur un fond foncé (suivant le thème utilisé)' + ), + 'logo_dark' => array( + 'label' => 'Logo foncé', + 'value' => $logo_dark, + 'type' => 'file', + 'upload' => 'partners', + 'info' => i18n('file_picture', file_upload_max_size() / 1024 / 1024), + 'check' => function($filename, $ext){ + if (!in_array($ext, array('gif', 'jpeg', 'jpg', 'png'))) + { + return i18n('select_image_file'); + } + }, + 'description' => 'Pour être affiché sur un fond clair (suivant le thème utilisé)' + ), + 'description' => array( + 'label' => 'Présentation', + 'value' => $description, + 'type' => 'editor' + ), + 'website' => array( + 'label' => 'Site internet', + 'icon' => 'fa-globe', + 'value' => $website, + 'type' => 'url', + 'rules' => 'required', + 'size' => 'col-md-5' + ), + 'facebook' => array( + 'label' => 'Page Facebook', + 'icon' => 'fa-facebook', + 'value' => $facebook, + 'type' => 'url', + 'size' => 'col-md-5' + ), + 'twitter' => array( + 'label' => 'Page Twitter', + 'icon' => 'fa-twitter', + 'value' => $twitter, + 'type' => 'url', + 'size' => 'col-md-5' + ), + 'code' => array( + 'label' => 'Code promotionnel', + 'icon' => 'fa-gift', + 'value' => $code, + 'type' => 'text', + 'description' => 'Indiquez le code promotionnel que vos utilisateurs peuvent utiliser pour profiter de promotions grâce à votre partenaire', + 'size' => 'col-md-3' + ), +); + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/forms/partners.php +*/ \ No newline at end of file diff --git a/modules/partners/models/partners.php b/modules/partners/models/partners.php new file mode 100644 index 00000000..03ab1edb --- /dev/null +++ b/modules/partners/models/partners.php @@ -0,0 +1,97 @@ +. +**************************************************************************/ + +class m_partners_m_partners extends Model +{ + public function get_partners() + { + return $this->db->select('p.partner_id', 'p.name', 'p.logo_light', 'p.logo_dark', 'p.website', 'p.facebook', 'p.twitter', 'p.count', 'p.code', 'p.order', 'pl.title', 'pl.description') + ->from('nf_partners p') + ->join('nf_partners_lang pl', 'p.partner_id = pl.partner_id') + ->where('pl.lang', $this->config->lang) + ->order_by('p.order', 'p.partner_id') + ->get(); + } + + public function check_partner($partner_id, $name) + { + return $this->db->select('p.partner_id', 'p.name', 'p.logo_light', 'p.logo_dark', 'p.website', 'p.facebook', 'p.twitter', 'p.count', 'p.code', 'pl.title', 'pl.description') + ->from('nf_partners p') + ->join('nf_partners_lang pl', 'p.partner_id = pl.partner_id') + ->where('p.partner_id', $partner_id) + ->where('p.name', $name) + ->where('pl.lang', $this->config->lang) + ->row(); + } + + public function add_partner($title, $logo_light, $logo_dark, $description, $website, $facebook, $twitter, $code) + { + $partner_id = $this->db->insert('nf_partners', array( + 'name' => url_title($title), + 'logo_light' => $logo_light, + 'logo_dark' => $logo_dark, + 'website' => $website, + 'facebook' => $facebook, + 'twitter' => $twitter, + 'code' => $code + )); + + $this->db->insert('nf_partners_lang', array( + 'partner_id' => $partner_id, + 'lang' => $this->config->lang, + 'title' => $title, + 'description' => $description + )); + } + + public function edit_partner($partner_id, $title, $logo_light, $logo_dark, $description, $website, $facebook, $twitter, $code) + { + $this->db ->where('partner_id', $partner_id) + ->update('nf_partners', array( + 'name' => url_title($title), + 'logo_light' => $logo_light, + 'logo_dark' => $logo_dark, + 'website' => $website, + 'facebook' => $facebook, + 'twitter' => $twitter, + 'code' => $code + )); + + $this->db ->where('partner_id', $partner_id) + ->where('lang', $this->config->lang) + ->update('nf_partners_lang', array( + 'title' => $title, + 'description' => $description + )); + } + + public function delete_partner($partner_id) + { + $this->load->library('file')->delete($this->db->select('logo_light', 'logo_dark')->from('nf_partners')->where('partner_id', $partner_id)->row()); + + $this->db ->where('partner_id', $partner_id) + ->delete('nf_partners'); + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/models/partners.php +*/ \ No newline at end of file diff --git a/modules/partners/partners.php b/modules/partners/partners.php new file mode 100644 index 00000000..d1e86c72 --- /dev/null +++ b/modules/partners/partners.php @@ -0,0 +1,75 @@ +. +**************************************************************************/ + +class m_partners extends Module +{ + public $title = 'Partenaires'; + public $description = ''; + public $icon = 'fa-star-o'; + public $link = 'http://www.neofrag.com'; + public $author = 'Michaël Bilcot '; + public $licence = 'http://www.neofrag.com/license.html LGPLv3'; + public $version = 'Alpha 0.1'; + public $nf_version = 'Alpha 0.1.4'; + public $path = __FILE__; + public $routes = array( + //Index + '{id}/{url_title}' => '_partner', + + //Admin + 'admin/{id}/{url_title*}' => '_edit' + ); + + public function settings() + { + $this ->load->library('form') + ->add_rules(array( + 'partners_logo_display' => array( + 'label' => 'Logo', + 'value' => $this->config->partners_logo_display, + 'values' => array( + 'logo_dark' => 'Foncé', + 'logo_light' => 'Clair' + ), + 'type' => 'radio', + 'description' => 'Utilisez les logos clairs s\'ils sont affichés sur un fond foncé', + 'size' => 'col-md-4' + ) + )) + ->add_submit($this('edit')) + ->add_back('admin/addons.html#modules'); + + if ($this->form->is_valid($post)) + { + $this->config('partners_logo_display', $post['partners_logo_display']); + + redirect_back('admin/addons.html#modules'); + } + + return new Panel(array( + 'content' => $this->form->display() + )); + } +} + +/* +NeoFrag Alpha 0.1.4 +./modules/partners/partners.php +*/ \ No newline at end of file diff --git a/modules/partners/views/index.tpl.php b/modules/partners/views/index.tpl.php new file mode 100644 index 00000000..03beb684 --- /dev/null +++ b/modules/partners/views/index.tpl.php @@ -0,0 +1,28 @@ + $partner): ?> +
+ +
+
+

À propos de

+ + '.bbcode($partner['description']).'

'; ?> +
+
+'; +endforeach; +?> \ No newline at end of file diff --git a/upload/partners/y4ofwq2ekppwnfpmnrmnafeivszlg5bd.png b/upload/partners/y4ofwq2ekppwnfpmnrmnafeivszlg5bd.png new file mode 100644 index 00000000..1bb16899 Binary files /dev/null and b/upload/partners/y4ofwq2ekppwnfpmnrmnafeivszlg5bd.png differ diff --git a/upload/partners/zwvmsjijfljaka4rdblgvlype1lnbwaw.png b/upload/partners/zwvmsjijfljaka4rdblgvlype1lnbwaw.png new file mode 100644 index 00000000..2c150c2e Binary files /dev/null and b/upload/partners/zwvmsjijfljaka4rdblgvlype1lnbwaw.png differ diff --git a/widgets/partners/controllers/admin.php b/widgets/partners/controllers/admin.php new file mode 100644 index 00000000..1717ae0c --- /dev/null +++ b/widgets/partners/controllers/admin.php @@ -0,0 +1,49 @@ +. +**************************************************************************/ + +class w_partners_c_admin extends Controller +{ + public function index($settings = array()) + { + if (empty($settings['id'])) + { + $settings['id'] = unique_id(); + } + + return $this->load->view('admin_index', array( + 'display_style' => $settings['display_style'], + 'display_number' => $settings['display_number'], + 'display_height' => $settings['display_height'], + 'id' => $settings['id'] + )); + } + + public function column($settings = array()) + { + return $this->load->view('admin_column', array( + 'display_style' => $settings['display_style'] + )); + } +} + +/* +NeoFrag Alpha 0.1.4 +./widgets/partners/controllers/admin.php +*/ \ No newline at end of file diff --git a/widgets/partners/controllers/checker.php b/widgets/partners/controllers/checker.php new file mode 100644 index 00000000..9a474c0f --- /dev/null +++ b/widgets/partners/controllers/checker.php @@ -0,0 +1,44 @@ +. +**************************************************************************/ + +class w_partners_c_checker extends Controller +{ + public function index($settings = array()) + { + return array( + 'display_style' => in_array($settings['display_style'], array('light', 'dark')) ? $settings['display_style'] : 'light', + 'display_number' => (int)$settings['display_number'], + 'display_height' => (int)$settings['display_height'] ?: '140', + 'id' => $settings['id'] + ); + } + + public function column($settings = array()) + { + return array( + 'display_style' => in_array($settings['display_style'], array('light', 'dark')) ? $settings['display_style'] : 'light' + ); + } +} + +/* +NeoFrag Alpha 0.1.4 +./widgets/partners/controllers/checker.php +*/ \ No newline at end of file diff --git a/widgets/partners/controllers/index.php b/widgets/partners/controllers/index.php new file mode 100644 index 00000000..08e6e560 --- /dev/null +++ b/widgets/partners/controllers/index.php @@ -0,0 +1,71 @@ +. +**************************************************************************/ + +class w_partners_c_index extends Controller_Widget +{ + public function index($settings = array()) + { + $this->js('partners'); + + $partners = $this->model()->get_partners(); + + if (!empty($partners)) + { + $total_partners = count($partners); + + return new Panel(array( + 'content' => $this->load->view('index', array( + 'partners' => $partners, + 'total_partners' => $total_partners, + 'total_slides' => ceil($total_partners / $settings['display_number']), + 'display_style' => $settings['display_style'], + 'display_number' => $settings['display_number'], + 'display_height' => $settings['display_height'], + 'id' => $settings['id'] + )), + 'body' => FALSE + )); + } + } + + public function column($settings = array()) + { + $this ->css('partners') + ->js('partners'); + + $partners = $this->model()->get_partners(); + + if (!empty($partners)) + { + return new Panel(array( + 'title' => 'Partenaires', + 'content' => $this->load->view('column', array( + 'partners' => $partners, + 'display_style' => $settings['display_style'] + )) + )); + } + } +} + +/* +NeoFrag Alpha 0.1.4 +./widgets/partners/controllers/index.php +*/ \ No newline at end of file diff --git a/widgets/partners/css/partners.css b/widgets/partners/css/partners.css new file mode 100644 index 00000000..95385a9f --- /dev/null +++ b/widgets/partners/css/partners.css @@ -0,0 +1,3 @@ +.widget-sponsors .column-sponsors img.logo { + opacity: 0; +} \ No newline at end of file diff --git a/widgets/partners/js/partners.js b/widgets/partners/js/partners.js new file mode 100644 index 00000000..b8c96bb4 --- /dev/null +++ b/widgets/partners/js/partners.js @@ -0,0 +1,36 @@ +$(function(){ + var resize_slider = function() { + $('.sponsor-item img.logo').each(function() { + $(this).animate({ + 'max-width':$(this).parent().parent().outerWidth() - 20 + 'px', + 'max-height':$(this).parent().parent().outerHeight() - 30 + 'px', + }, 500); + + $(this).stop(true, true).delay(100).animate({ + opacity: 0.7 + }); + }); + } + + resize_slider(); + + $('.carousel.slide').on('slid.bs.carousel', function() { + resize_slider(); + }); + + $('.column-sponsors img.logo').each(function() { + $(this).animate({'max-width':$(this).parent().parent().outerWidth() - 20 + 'px'}, 500); + + $(this).stop(true, true).delay(100).animate({ + opacity: 0.7 + }); + }); + + $('.sponsor-item img.logo, .column-sponsors img.logo').hover( + function() { + $(this).animate({opacity: 1}); + }, function() { + $(this).animate({opacity: 0.7}); + } + ); +}); diff --git a/widgets/partners/partners.php b/widgets/partners/partners.php new file mode 100644 index 00000000..dde04680 --- /dev/null +++ b/widgets/partners/partners.php @@ -0,0 +1,40 @@ +. +**************************************************************************/ + +class w_partners extends Widget +{ + public $title = 'Partenaires'; + public $description = ''; + public $link = 'http://www.neofrag.com'; + public $author = 'Michaël Bilcot '; + public $licence = 'http://www.neofrag.com/license.html LGPLv3'; + public $version = 'Alpha 0.1.4'; + public $nf_version = 'Alpha 0.1.4'; + public $path = __FILE__; + public $types = array( + 'index' => 'Affichage horizontal en slider', + 'column' => 'Affichage simple en colonne' + ); +} + +/* +NeoFrag Alpha 0.1.4 +./widgets/partners/partners.php +*/ \ No newline at end of file diff --git a/widgets/partners/views/admin_column.tpl.php b/widgets/partners/views/admin_column.tpl.php new file mode 100644 index 00000000..32dfaf9c --- /dev/null +++ b/widgets/partners/views/admin_column.tpl.php @@ -0,0 +1,20 @@ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+
\ No newline at end of file diff --git a/widgets/partners/views/admin_index.tpl.php b/widgets/partners/views/admin_index.tpl.php new file mode 100644 index 00000000..afe1ad3d --- /dev/null +++ b/widgets/partners/views/admin_index.tpl.php @@ -0,0 +1,40 @@ +
+ +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
px
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/widgets/partners/views/column.tpl.php b/widgets/partners/views/column.tpl.php new file mode 100644 index 00000000..8ce340db --- /dev/null +++ b/widgets/partners/views/column.tpl.php @@ -0,0 +1,20 @@ +
+ $partner): ?> + + '; + endforeach; + ?> +
\ No newline at end of file diff --git a/widgets/partners/views/index.tpl.php b/widgets/partners/views/index.tpl.php new file mode 100644 index 00000000..f3b05d19 --- /dev/null +++ b/widgets/partners/views/index.tpl.php @@ -0,0 +1,61 @@ + + \ No newline at end of file