diff --git a/avatar/.gitignore b/avatar/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/background/.gitignore b/background/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/file/.gitignore b/file/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/plugins/ChooseTheme/ChooseThemePlugin.php b/plugins/ChooseTheme/ChooseThemePlugin.php new file mode 100644 index 0000000000..b54e3d09a6 --- /dev/null +++ b/plugins/ChooseTheme/ChooseThemePlugin.php @@ -0,0 +1,74 @@ +. + * + * @author Knut Erik Hollund + * @copyright 2015 kollektivet0x242. http://www.kollektivet0x242.no + * + * @license GNU Affero General Public License http://www.gnu.org/licenses/ + */ + +class ChooseThemePlugin extends Plugin { + + public function onRouterInitialized(URLMapper $m) { + $m->connect('main/choosethemesettings', array('action' => 'choosethemesettings')); + } + + public function onPluginVersion(array &$versions) { + + $versions[] = array('name' => 'ChooseTheme', + 'version' => '0.1', + 'author' => 'Knut Erik "abjectio" Hollund', + 'homepage' => 'https://gitlab.com/kollektivet0x242/gsp-choosetheme', + 'rawdescription' => + // TRANS: Plugin description. + _m('Allowing user to select the preferred theme.')); + return true; + } + + /** + * Menu item for ChooseTheme + * + * @param Action $action action being executed + * + * @return boolean hook return + */ + function onEndAccountSettingsNav(Action $action) { + $action_name = $action->getActionName(); + + $action->menuItem(common_local_url('choosethemesettings'), + // TRANS: Poll plugin menu item on user settings page. + _m('MENU', 'Theme'), + // TRANS: Poll plugin tooltip for user settings menu item. + _m('Choose Theme'), + $action_name === 'themesettings'); + + return true; + } + + + function onStartShowStylesheets(Action $action) { + + //get the theme and set the current config for site and theme. + if($action->getScoped() instanceof Profile) { + $site_theme = common_config('site','theme'); + $user_theme = $action->getScoped()->getPref('chosen_theme', 'theme', $site_theme); + common_config_set('site', 'theme', $user_theme); + } + return true; + } +} diff --git a/plugins/ChooseTheme/README.md b/plugins/ChooseTheme/README.md new file mode 100644 index 0000000000..2e0a761fa1 --- /dev/null +++ b/plugins/ChooseTheme/README.md @@ -0,0 +1,13 @@ +### Choose theme +A simple plugin for [GNU social software](http://gnu.io/social/). +The plugin enables the user to select their own theme, independently on site setting and other users. + +#### Enable plugin +- Include this code in your GNU social instance. +- Edit your `config.php` to include `addPlugin("ChooseTheme");` + +#### How-to +- Choose settings from the GNU social menu. Choose 'Theme' on left menu. +- Select a theme and press 'Save'. + + diff --git a/plugins/ChooseTheme/actions/choosethemesettings.php b/plugins/ChooseTheme/actions/choosethemesettings.php new file mode 100644 index 0000000000..97ef7229c9 --- /dev/null +++ b/plugins/ChooseTheme/actions/choosethemesettings.php @@ -0,0 +1,187 @@ +. + * + * @author Knut Erik Hollund + * @copyright 2015 kollektivet0x242. http://www.kollektivet0x242.no + * + * @license GNU Affero General Public License http://www.gnu.org/licenses/ + */ + +if (!defined('STATUSNET') && !defined('GNUSOCIAL')) { + exit(1); +} + +class ChooseThemeSettingsAction extends SettingsAction { + + + /** + * Title of the page + * @return string Page title + */ + function title() { + // TRANS: Page title. + return _m('Choose theme settings'); + } + + /** + * Instructions for use + * @return string Instructions for use + */ + function getInstructions() { + // TRANS: Page instructions. + return _m('Choose theme'); + } + + /** + * Show the form for ChooseTheme + * @return void + */ + function showContent() { + + $site_theme = common_config('site','theme'); + $prefs = $this->scoped->getPref('chosen_theme', 'theme',$site_theme); + if ($prefs === null) { + common_debug('No chosen theme found in database for user.'); + } + + //Get a list of available themes on instance + $available_themes = Theme::listAvailable(); + $chosenone = array_search($prefs,$available_themes,true); + $form = new ChooseThemeForm($this, $chosenone); + $form->show(); + } + + + /** + * Handler method + * + * @param array $argarray is ignored since it's now passed in in prepare() + * @return void + */ + function handlePost() { + + //Get a list of available themes on instance + $available_themes = Theme::listAvailable(); + $chosen_theme = $available_themes[(int)$this->arg('dwct','0')]; + + $this->success = true; + $this->msg = _m('Settings saved.'); + + $this->success = $this->scoped->setPref('chosen_theme', 'theme', $chosen_theme); + // TRANS: Confirmation shown when user profile settings are saved. + if(!$this->success) $this->msg = _('No valid theme chosen.'); + + $this->showForm(_($this->msg), $this->success); + } +} + + +class ChooseThemeForm extends Form { + + protected $prefs = null; + + + function __construct($out, $prefs) { + parent::__construct($out); + + if ($prefs!=null) { + $this->prefs = $prefs; + } else { + $prefs = common_config('site','theme'); + } + +} + + /** + * Visible or invisible data elements + * + * Display the form fields that make up the data of the form. + * Sub-classes should overload this to show their data. + * @return void + */ + + function formData() { + + //Get a list of available themes on instance + $available_themes = Theme::listAvailable(); + + //Remove theme 'licenses' from selectable themes. + //The 'licenses' theme is not an actual theme and + //will just mess-up the gui. + $key = array_search('licenses',$available_themes); + if($key!=false){ + unset($available_themes[$key]); + } + + $this->elementStart('fieldset'); + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->dropdown('dwct',_m('Themes'),$available_themes,_m('Select a theme'),false, $this->prefs); + $this->elementEnd('li'); + $this->elementEnd('ul'); + $this->elementEnd('fieldset'); + + } + + /** + * Buttons for form actions + * + * Submit and cancel buttons (or whatever) + * Sub-classes should overload this to show their own buttons. + * @return void + */ + + function formActions() + { + $this->submit('submit', _('Save')); + } + + /** + * ID of the form + * + * Should be unique on the page. Sub-classes should overload this + * to show their own IDs. + * @return int ID of the form + */ + + function id() { + return 'form_choosetheme_prefs'; + } + + /** + * Action of the form. + * + * URL to post to. Should be overloaded by subclasses to give + * somewhere to post to. + * @return string URL to post to + */ + + function action() { + return common_local_url('choosethemesettings'); + } + + /** + * Class of the form. May include space-separated list of multiple classes. + * + * @return string the form's class + */ + + function formClass() { + return 'form_settings'; + } +} diff --git a/plugins/ChooseTheme/locale/ChooseTheme.pot b/plugins/ChooseTheme/locale/ChooseTheme.pot new file mode 100644 index 0000000000..df6c0ca7cc --- /dev/null +++ b/plugins/ChooseTheme/locale/ChooseTheme.pot @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the GNU social package. +# FIRST AUTHOR abjectio@kollektivet0x242.no, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: Choose Theme\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-10 22:00+0100\n" +"PO-Revision-Date: 2015-06-10 22:01+0100\n" +"Last-Translator: Knut Erik Hollund \n" +"Language-Team: kollektivet0x242.no \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Basepath: ./actions\n" +"X-Poedit-KeywordsList: _m\n" +"X-Poedit-SearchPath-0: ./actions\n" +"X-Poedit-SearchPath-1: .\n" + +#: actions/choosethemesettings.php:38 +msgid "Choose theme settings" +msgstr "" + +#: actions/choosethemesettings.php:47 +msgid "Choose theme" +msgstr "" + +#: actions/choosethemesettings.php:83 +msgid "Settings saved." +msgstr "" + +#: actions/choosethemesettings.php:87 +msgid "No valid theme chosen." +msgstr "" + +#: actions/choosethemesettings.php:134 +msgid "Themes" +msgstr "" + +#: actions/choosethemesettings.php:134 +msgid "Select a theme" +msgstr "" + +#: actions/choosethemesettings.php:151 +msgid "Save" +msgstr "" + +#: ChooseThemePlugin.php:39 +msgid "Allowing user to select the preferred theme." +msgstr "" + +#: ChooseThemePlugin.php:55 +msgid "MENU" +msgstr "" + +#: ChooseThemePlugin.php:57 +msgid "Choose Theme" +msgstr "" diff --git a/plugins/ChooseTheme/locale/nb/LC_MESSAGES/ChooseTheme.po b/plugins/ChooseTheme/locale/nb/LC_MESSAGES/ChooseTheme.po new file mode 100644 index 0000000000..206a477185 --- /dev/null +++ b/plugins/ChooseTheme/locale/nb/LC_MESSAGES/ChooseTheme.po @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the GNU social package. +# FIRST AUTHOR abjectio@kollektivet0x242.no, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: Choose Theme\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-10 22:00+0100\n" +"PO-Revision-Date: 2015-06-10 22:04+0100\n" +"Last-Translator: Knut Erik Hollund \n" +"Language-Team: kollektivet0x242.no \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Basepath: ./actions\n" +"X-Poedit-KeywordsList: _m\n" +"X-Poedit-SearchPath-0: ./actions\n" +"X-Poedit-SearchPath-1: .\n" + +#: actions/choosethemesettings.php:38 +msgid "Choose theme settings" +msgstr "Innstillinger" + +#: actions/choosethemesettings.php:47 +msgid "Choose theme" +msgstr "Velg tema" + +#: actions/choosethemesettings.php:83 +msgid "Settings saved." +msgstr "Innstillinger lagret." + +#: actions/choosethemesettings.php:87 +msgid "No valid theme chosen." +msgstr "Ingen gyldige tema er valgt." + +#: actions/choosethemesettings.php:134 +msgid "Themes" +msgstr "Temaer" + +#: actions/choosethemesettings.php:134 +msgid "Select a theme" +msgstr "Velg tema" + +#: actions/choosethemesettings.php:151 +msgid "Save" +msgstr "Lagre" + +#: ChooseThemePlugin.php:39 +msgid "Allowing user to select the preferred theme." +msgstr "Lar brukeren velge sitt foretrukne tema." + +#: ChooseThemePlugin.php:55 +msgid "MENU" +msgstr "Tema" + +#: ChooseThemePlugin.php:57 +msgid "Choose Theme" +msgstr "Velg tema"