skala
Laurent Opprecht 14 years ago
parent 682330c373
commit d89857b44c
  1. 176
      main/inc/lib/plugin.class.php
  2. 11
      main/lang/french/plugin_rss.inc.php
  3. 23
      plugin/rss/index.php
  4. 16
      plugin/rss/lang/english.php
  5. 6
      plugin/rss/lang/french.php
  6. 38
      plugin/rss/lib/rss_plugin.class.php
  7. 35
      plugin/rss/plugin.php
  8. 4
      plugin/rss/readme.txt

@ -0,0 +1,176 @@
<?php
/**
* Base class for plugins
*
* @copyright (c) 2012 University of Geneva
* @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
* @author Laurent Opprecht <laurent@opprecht.info>
*/
class Plugin
{
protected $version = '';
protected $author = '';
protected $fields = array();
protected function __construct($version, $author, $settings = array())
{
$this->version = $version;
$this->author = $author;
$this->fields = $settings;
global $language_files;
$language_files[] = 'plugin_' . $this->get_name();
}
function get_info()
{
$result = array();
$result['title'] = $this->get_title();
$result['comment'] = $this->get_comment();
$result['version'] = $this->get_version();
$result['author'] = $this->get_author();
if ($form = $this->get_settings_form())
{
$result['settings_form'] = $form;
foreach ($this->fields as $name => $type)
{
$value = $this->get($name);
$result[$name] = $value;
}
}
return $result;
}
function get_name()
{
$result = get_class($this);
$result = str_replace('Plugin', '', $result);
$result = strtolower($result);
return $result;
}
function get_title()
{
return $this->get_lang('plugin_title');
}
function get_comment()
{
return $this->get_lang('plugin_comment');
}
function get_version()
{
return $this->version;
}
function get_author()
{
return $this->author;
}
function get_css()
{
$name = $this->get_name();
$root = api_get_path(SYS_PLUGIN_PATH);
$path = "$root/$name/resources/$name.css";
if (!is_readable($path))
{
return '';
}
$css = array();
$css[] = file_get_contents($path);
$result = implode($css);
return $result;
}
/**
*
* @return FormValidator
*/
function get_settings_form()
{
$result = new FormValidator($this->get_name());
$defaults = array();
foreach ($this->fields as $name => $type)
{
$value = $this->get($name);
$defaults[$name] = $value;
$type = $type ? $type : 'text';
if ($type == 'wysiwyg')
{
$result->add_html_editor($name, $this->get_lang($name));
}
else
{
$result->addElement($type, $name, $this->get_lang($name));
}
}
$result->setDefaults($defaults);
$result->addElement('style_submit_button', 'submit_button', $this->get_lang('Save'));
return $result;
}
function get($name)
{
$content = '';
$title = 'Static';
$settings = $this->get_settings();
foreach ($settings as $setting)
{
if ($setting['variable'] == ($this->get_name() . '_' . $name))
{
return $setting['selected_value'];
}
}
return false;
}
private $settings = null;
public function get_settings()
{
if (is_null($this->settings))
{
$settings = api_get_settings_params(array("subkey = ? AND category = ? AND type = ? " => array($this->get_name(), 'Plugins', 'setting')));
$this->settings = $settings;
}
return $this->settings;
}
private $strings = null;
public function get_lang($name)
{
if (is_null($this->strings))
{
global $language_interface;
$root = api_get_path(SYS_PLUGIN_PATH);
$name = $this->get_name();
$language = $language_interface;
$path = "$root/$name/lang/$language.php";
if (is_readable($path))
{
include $path;
$this->strings = $strings;
}
else
{
$this->strings = array();
}
}
if (isset($this->strings[$name]))
{
return $this->strings[$name];
}
return get_lang($name);
}
}

@ -1,11 +0,0 @@
<?php
/**
*
* @copyright (c) 2012 University of Geneva
* @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
* @author Laurent Opprecht <laurent@opprecht.info>
*/
$title = "Titre";
$no_rss = "Veuillez configurer ";

@ -1,32 +1,33 @@
<?php
$bullet = api_get_path(WEB_PLUGIN_PATH) . '/rss/resources/arrow-bullet.png';
$plugin = RssPlugin::create();
$rss = $plugin->get_rss();
$settings = $plugin_info['settings'];
$rss = isset($plugin_info['rss']) ? $plugin_info['rss'] : '';
$title = isset($plugin_info['rss_title']) ? $plugin_info['rss_title'] : 'Rss';
$title = $plugin->get_block_title();
$title = $title ? "<h4>$title</h4>" : '';
$css = $plugin->get_css();
$css = $css ? "<style type=\"text/css\">$css</style>" : '';
$bullet = api_get_path(WEB_PLUGIN_PATH) . '/rss/resources/arrow-bullet.png';
if (empty($rss))
{
echo get_lang('no_rss');
return;
}
$css = array();
$css[] = file_get_contents(dirname(__FILE__) . '/resources/rss.css');
$css[] = file_get_contents(dirname(__FILE__) . '/resources/color.css');
$css = implode($css);
echo<<<EOT
<div class="well sidebar-nav rss">
<style type="text/css">
$css
.gfg-listentry-highlight{
background-image: url('$bullet');
}
</style>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
@ -52,7 +53,7 @@ echo<<<EOT
}
google.setOnLoadCallback(OnLoad);
</script>
<h4>$title</h4>
$title
<div id="news" class="" style="min-height:300px;"></div>
</div>
EOT;

@ -0,0 +1,16 @@
<?php
/**
*
* @copyright (c) 2012 University of Geneva
* @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
* @author Laurent Opprecht <laurent@opprecht.info>
*/
$strings['plugin_title'] = "Rss";
$strings['plugin_comment'] = "Display rss content.";
$strings['rss'] = "Rss";
$strings['block_title'] = "Block title";
$strings['title'] = "Title";
$strings['no_rss'] = "There is no RSS configured. Please add a RSS";

@ -6,6 +6,8 @@
* @author Laurent Opprecht <laurent@opprecht.info>
*/
$strings['plugin_title'] = "Rss";
$strings['plugin_comment'] = "Affiche le contenu de flux rss.";
$title = "Title";
$no_rss = "There is no RSS configured. Please add a RSS";
$strings['title'] = "Titre";
$strings['no_rss'] = "Veuillez configurer";

@ -0,0 +1,38 @@
<?php
/**
* Description of
*
* @copyright (c) 2012 University of Geneva
* @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
* @author Laurent Opprecht <laurent@opprecht.info>
*/
class RssPlugin extends Plugin
{
/**
*
* @return RssPlugin
*/
static function create()
{
static $result = null;
return $result ? $result : $result = new self();
}
function get_block_title()
{
return $this->get('block_title');
}
function get_rss()
{
return $this->get('rss');
}
protected function __construct()
{
parent::__construct('1.1', 'Laurent Opprecht', array('block_title' => 'text', 'rss' => 'text'));
}
}

@ -9,37 +9,8 @@
* @author Laurent Opprecht
*/
global $language_files;
$language_files[] = 'plugin_rss';
$plugin_info['title'] = 'Rss';
$plugin_info['comment'] = 'Rss';
$plugin_info['version'] = '1.1';
$plugin_info['author'] = 'Laurent Opprecht';
require_once api_get_path(LIBRARY_PATH) . '/plugin.class.php';
require_once dirname(__FILE__) . '/lib/rss_plugin.class.php';
$rss = '';
$title = '';
$plugin_settings = api_get_settings_params(array("subkey = ? AND category = ? AND type = ? " => array('rss', 'Plugins', 'setting')));
$plugin_settings = $plugin_settings ? $plugin_settings : array();
foreach ($plugin_settings as $setting)
{
if ($setting['variable'] == 'rss_rss')
{
$rss = $setting['selected_value'];
}
else if ($setting['variable'] == 'rss_title')
{
$title = $setting['selected_value'];
}
}
$form = new FormValidator('rss');
$form->addElement('text', 'title', get_lang('title'));
$form->addElement('text', 'rss', 'Rss');
$form->addElement('style_submit_button', 'submit_button', get_lang('Save'));
$form->setDefaults(array('rss' => $rss, 'title' => $title));
$plugin_info['settings_form'] = $form;
$plugin_info['rss'] = $rss;
$plugin_info['rss_title'] = $title;
$plugin_info = RssPlugin::create()->get_info();

@ -0,0 +1,4 @@
Display RSS feeds using the Google Dynamic Feed control.
<p>
See http://www.google.com/uds/solutions/dynamicfeed/index.html for further information.
</p>
Loading…
Cancel
Save