commit 01c885d48f54f1223b4b5e83876348297c0794d2 Author: LeineServer Date: Tue Feb 16 17:05:26 2021 +0100 Initial Commit of the old dw-plugin diff --git a/README.md b/README.md new file mode 100644 index 0000000..f2b944b --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# whoisinyourhackspace Plugin for DokuWiki + +This plugin uses the [SpaceAPI](http://spaceapi.net/) of your hackerspace to display the current room state. + +## Install + +The best way is to put [wiyh] into the page :sidebar, but any other place is fine too. + +If you install this plugin manually, make sure it is installed in +lib/plugins/whoisinyourhackspace/ - if the folder is called different it +will not work! + +Please refer to http://www.dokuwiki.org/plugins for additional info +on how to install plugins in DokuWiki. + +---- +Copyright (C) Tim Schumacher + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +See the COPYING file in your DokuWiki folder for details diff --git a/conf/default.php b/conf/default.php new file mode 100644 index 0000000..c0335b4 --- /dev/null +++ b/conf/default.php @@ -0,0 +1,8 @@ + + */ + +$conf['api_path'] = ''; diff --git a/conf/metadata.php b/conf/metadata.php new file mode 100644 index 0000000..0e7e0a0 --- /dev/null +++ b/conf/metadata.php @@ -0,0 +1,10 @@ + + */ + + +$meta['api_path'] = array('the place where your api resides'); + diff --git a/lang/de-informal b/lang/de-informal new file mode 120000 index 0000000..c42e816 --- /dev/null +++ b/lang/de-informal @@ -0,0 +1 @@ +de \ No newline at end of file diff --git a/lang/de/lang.php b/lang/de/lang.php new file mode 100644 index 0000000..89583ed --- /dev/null +++ b/lang/de/lang.php @@ -0,0 +1,17 @@ + + */ + +// menu entry for admin plugins +$lang['wiyh_heading'] = 'Raumstatus'; +$lang['wiyh_open'] = 'ist geöffnet.'; +$lang['wiyh_closed'] = 'ist geschlossen.'; +$lang['wiyh_stats'] = 'Raumöffnungsstatistiken'; + + + + +//Setup VIM: ex: et ts=4 : diff --git a/lang/en/lang.php b/lang/en/lang.php new file mode 100644 index 0000000..d7de60a --- /dev/null +++ b/lang/en/lang.php @@ -0,0 +1,16 @@ + + */ + +// menu entry for admin plugins +$lang['wiyh_heading'] = 'State'; +$lang['wiyh_open'] = 'is open.'; +$lang['wiyh_closed'] = 'is closed.'; +$lang['wiyh_stats'] = 'Stats'; + + + +//Setup VIM: ex: et ts=4 : diff --git a/lang/en/settings.php b/lang/en/settings.php new file mode 100644 index 0000000..ba28e57 --- /dev/null +++ b/lang/en/settings.php @@ -0,0 +1,13 @@ + + */ + +// keys need to match the config setting name +// $lang['fixme'] = 'FIXME'; + + + +//Setup VIM: ex: et ts=4 : diff --git a/manager.dat b/manager.dat new file mode 100644 index 0000000..4c4051a --- /dev/null +++ b/manager.dat @@ -0,0 +1 @@ +installed=Sat, 28 Mar 2015 11:24:37 +0100 diff --git a/plugin.info.txt b/plugin.info.txt new file mode 100644 index 0000000..a161516 --- /dev/null +++ b/plugin.info.txt @@ -0,0 +1,7 @@ +base whoisinyourhackspace +author Tim Schumacher +email tim.daniel.schumacher@gmail.com +date 2011-09-09 +name whoisinyourhackspace plugin +desc Displays if someone is in your hackspace +url http://hackspace-jena.de/ diff --git a/style.css b/style.css new file mode 100644 index 0000000..cd6b256 --- /dev/null +++ b/style.css @@ -0,0 +1,43 @@ +/*.ample { + display: block; + width: 200px; + height: 100px; + font-size: 24px; + font-weight: bold; + padding: 5px; +} + +.available { + background-color: green; + color: white; +} + +.not-available { + background-color: red; + color: white; +}*/ + +div.hackerspace-room-state { + border: 1px solid #cccccc; + background-color: #ffffff; + padding: 0.5rem; +} + +div.hackerspace-room-state h3 { + +} + +div.leinelab-state img.icon { + display: inline; + width: 180px; +} + +div.hackerspace-room-state .text { + display: inline; + margin-left: 0.3rem; +} + +div.hackerspace-room-state hr { + margin-top: 0.3rem; + margin-bottom: 0.3rem; +} \ No newline at end of file diff --git a/style.css~ b/style.css~ new file mode 100644 index 0000000..dc9164c --- /dev/null +++ b/style.css~ @@ -0,0 +1,44 @@ +/*.ample { + display: block; + width: 200px; + height: 100px; + font-size: 24px; + font-weight: bold; + padding: 5px; +} + +.available { + background-color: green; + color: white; +} + +.not-available { + background-color: red; + color: white; +}*/ + +div.hackerspace-room-state { + border: 1px solid #cccccc; + background-color: #ffffff; + padding: 0.5rem; +} + +div.hackerspace-room-state h3 { + +} + +div.hackerspace-room-state .icon { + display: inline; + width: 24px; + height: 24px; +} + +div.hackerspace-room-state .text { + display: inline; + margin-left: 0.3rem; +} + +div.hackerspace-room-state hr { + margin-top: 0.3rem; + margin-bottom: 0.3rem; +} \ No newline at end of file diff --git a/syntax.php b/syntax.php new file mode 100644 index 0000000..669082b --- /dev/null +++ b/syntax.php @@ -0,0 +1,87 @@ + + */ + +// must be run within Dokuwiki +if (!defined('DOKU_INC')) die(); + +if (!defined('DOKU_LF')) define('DOKU_LF', "\n"); +if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t"); +if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); + +require_once DOKU_PLUGIN.'syntax.php'; + +class syntax_plugin_whoisinyourhackspace extends DokuWiki_Syntax_Plugin { + /** + * Check if a given option has been given, and remove it from the initial string + * @param string $match The string match by the plugin + * @param string $pattern The pattern which activate the option + * @param $varAffected The variable which will memorise the option + * @param $valIfFound the value affected to the previous variable if the option is found + */ + private function _checkOption(&$match, $pattern, &$varAffected, $valIfFound){ + if ( preg_match($pattern, $match, $found) ){ + $varAffected = $valIfFound; + $match = str_replace($found[0], '', $match); + } + } // _checkOption + + public function getType() { + return 'substition'; + } + + public function getPType() { + return 'block'; + } + + public function getSort() { + return 0; + } + + + public function connectTo($mode) { + $this->Lexer->addSpecialPattern('\[wiyh\]',$mode,'plugin_whoisinyourhackspace'); + } + + public function render($mode, &$renderer, $data) { + global $conf; + + if($mode != 'xhtml') return false; + + $api_path = $this->getConf('api_path'); + + $file = file_get_contents($api_path); + + $api = json_decode($file); + + $content = ''; + $content .= '
'; + $content .= "

" . $this->getLang('wiyh_heading') . "

"; + + if ($api->state->open) { + $content .= "state->icon->open}\" alt=\"{$api->space} ist besetzt.\" title=\"{$api->space} ist besetzt.\" />"; + $content .= "

{$api->space} " . $this->getLang('wiyh_open') . "

"; + } else { + $content .= "state->icon->closed}\" alt=\"{$api->space} ist geschlossen.\" title=\"{$api->space} ist geschlossen.\" />"; + $content .= "

{$api->space} " . $this->getLang('wiyh_closed') . "

"; + } + + $date = new DateTime(); + $date->setTimeStamp($api->lastchange); + $content .= "

seit " . $date->format('d.m.Y H:i') . " Uhr

"; + + $content .= '
'; + + $content .= sprintf('

'.$this->getLang('wiyh_stats').'

',strtolower($api->space)); + $content .= '
'; + + $renderer->doc .= $content; + return true; + } +} + +// vim:ts=4:sw=4:et: diff --git a/syntax.php~ b/syntax.php~ new file mode 100644 index 0000000..4d6eaf1 --- /dev/null +++ b/syntax.php~ @@ -0,0 +1,83 @@ + + */ + +// must be run within Dokuwiki +if (!defined('DOKU_INC')) die(); + +if (!defined('DOKU_LF')) define('DOKU_LF', "\n"); +if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t"); +if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); + +require_once DOKU_PLUGIN.'syntax.php'; + +class syntax_plugin_whoisinyourhackspace extends DokuWiki_Syntax_Plugin { + /** + * Check if a given option has been given, and remove it from the initial string + * @param string $match The string match by the plugin + * @param string $pattern The pattern which activate the option + * @param $varAffected The variable which will memorise the option + * @param $valIfFound the value affected to the previous variable if the option is found + */ + private function _checkOption(&$match, $pattern, &$varAffected, $valIfFound){ + if ( preg_match($pattern, $match, $found) ){ + $varAffected = $valIfFound; + $match = str_replace($found[0], '', $match); + } + } // _checkOption + + public function getType() { + return 'substition'; + } + + public function getPType() { + return 'block'; + } + + public function getSort() { + return 0; + } + + + public function connectTo($mode) { + $this->Lexer->addSpecialPattern('\[wiyh\]',$mode,'plugin_whoisinyourhackspace'); + } + + public function render($mode, &$renderer, $data) { + global $conf; + + if($mode != 'xhtml') return false; + + $api_path = $this->getConf('api_path'); + + $file = file_get_contents($api_path); + + $api = json_decode($file); + + $content = ''; + $content .= '
'; + $content .= "

" . $this->getLang('wiyh_heading') . "

"; + + if ($api->state->open) { + $content .= "state->icon->open}\" alt=\"{$api->space} ist besetzt.\" title=\"{$api->space} ist besetzt.\" />"; + $content .= "

{$api->space} " . $this->getLang('wiyh_open') . "

"; + } else { + $content .= "state->icon->closed}\" alt=\"{$api->space} ist geschlossen.\" title=\"{$api->space} ist geschlossen.\" />"; + $content .= "

{$api->space} " . $this->getLang('wiyh_closed') . "

"; + } + + $content .= '
'; + + $content .= sprintf('

'.$this->getLang('wiyh_stats').'

',strtolower($api->space)); + $content .= '
'; + + $renderer->doc .= $content; + return true; + } +} + +// vim:ts=4:sw=4:et: