aboutsummaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
Diffstat (limited to 'views')
-rw-r--r--views/default/plugins/opensearch/settings.php97
-rw-r--r--views/xml/opensearch/description.php42
2 files changed, 124 insertions, 15 deletions
diff --git a/views/default/plugins/opensearch/settings.php b/views/default/plugins/opensearch/settings.php
new file mode 100644
index 000000000..23ba19538
--- /dev/null
+++ b/views/default/plugins/opensearch/settings.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Opensearch plugin settings
+ */
+
+// set default value
+if (!isset($vars['entity']->shortname)) {
+ $vars['entity']->shortname = elgg_get_site_entity()->name;
+}
+if (!isset($vars['entity']->desc)) {
+ $vars['entity']->desc = elgg_echo('opensearch:engine', array(elgg_get_site_entity()->name));
+}
+if (!isset($vars['entity']->longname)) {
+ $vars['entity']->longname = elgg_get_site_entity()->description;
+}
+if (!isset($vars['entity']->icon)) {
+ $vars['entity']->icon = '_graphics/favicon.ico';
+}
+if (!isset($vars['entity']->tags)) {
+ $vars['entity']->tags = '';
+}
+if (!isset($vars['entity']->lang)) {
+ $vars['entity']->lang = 'en-us';
+}
+if (!isset($vars['entity']->query)) {
+ $vars['entity']->query = '';
+}
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:shortname').'</label> ';
+echo elgg_echo('opensearh:settings:shortname:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[shortname]',
+ 'value' => $vars['entity']->shortname,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:desc').'</label> ';
+echo elgg_echo('opensearh:settings:desc:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[desc]',
+ 'value' => $vars['entity']->desc,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:longname').'</label> ';
+echo elgg_echo('opensearh:settings:longname:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[longname]',
+ 'value' => $vars['entity']->longname,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:icon').'</label> ';
+echo elgg_echo('opensearh:settings:icon:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[icon]',
+ 'value' => $vars['entity']->icon,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:tags').'</label> ';
+echo elgg_echo('opensearh:settings:tags:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[tags]',
+ 'value' => $vars['entity']->tags,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:lang').'</label> ';
+echo elgg_echo('opensearh:settings:lang:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[lang]',
+ 'value' => $vars['entity']->lang,
+));
+echo '</div>';
+
+echo '<div>';
+echo '<label>'.elgg_echo('opensearh:settings:query').'</label> ';
+echo elgg_echo('opensearh:settings:query:description');
+echo ' ';
+echo elgg_view('input/text', array(
+ 'name' => 'params[query]',
+ 'value' => $vars['entity']->query,
+));
+echo '</div>';
diff --git a/views/xml/opensearch/description.php b/views/xml/opensearch/description.php
index 78aadc699..586cadf83 100644
--- a/views/xml/opensearch/description.php
+++ b/views/xml/opensearch/description.php
@@ -1,6 +1,6 @@
<?php
/**
- * Creates an OpenSearch description document from config.ini
+ * Creates an OpenSearch description document from plugin settings
* http://www.opensearch.org/Specifications/OpenSearch/1.1
*/
@@ -8,18 +8,31 @@
header('Pragma: public', true);
header('Cache-Control: public', true);
-$config_ini = dirname(dirname(dirname(dirname(__FILE__)))) . '/config.ini';
-$config = parse_ini_file($config_ini);
-if ($config == false) {
- elgg_log("Unable to parse OpenSearch config file", 'ERROR');
- return true;
-}
-
-extract($config);
-
$site = elgg_get_site_entity();
$email = $site->email;
+$shortname = elgg_get_plugin_setting('shortname', 'opensearch');
+$description = elgg_get_plugin_setting('desc', 'opensearch');
+$longname = elgg_get_plugin_setting('longname', 'opensearch');
+$icon = elgg_get_plugin_setting('icon', 'opensearch');
+$tags = elgg_get_plugin_setting('tags', 'opensearch');
+$lang = string_to_tag_array(elgg_get_plugin_setting('lang', 'opensearch'));
+$query = elgg_get_plugin_setting('query', 'opensearch');
+
+if (empty($shortname)) {
+ $shortname = $site->name;
+}
+if (empty($description)) {
+ $description = elgg_echo('opensearch:engine', array(elgg_get_site_entity()->name));
+}
+if (empty($icon)) {
+ $icon = '_graphics/favicon.ico';
+}
+if (empty($lang)) {
+ $lang = 'en-us';
+}
+
+
$rss_url = elgg_normalize_url('search/?q={searchTerms}&view=opensearch_rss');
$rss_url = elgg_format_url($rss_url);
$html_url = elgg_normalize_url('search/?q={searchTerms}');
@@ -35,11 +48,10 @@ $site_url = elgg_get_site_url();
<Contact><?php echo $site->email; ?></Contact>
<Url type="text/html" template="<?php echo $html_url; ?>"/>
<Url type="application/rss+xml" template="<?php echo $rss_url; ?>"/>
-<?php if (isset($ico)): ?>
- <Image height="16" width="16" type="image/vnd.microsoft.icon"><?php echo "{$site_url}$ico"; ?></Image>
-<?php endif; ?>
-<?php if (isset($png)): ?>
- <Image height="64" width="64" type="image/png"><?php echo "{$site_url}$png"; ?></Image>
+<?php if (preg_match("/.ico$/", $icon)): ?>
+ <Image height="16" width="16" type="image/vnd.microsoft.icon"><?php echo "{$site_url}$icon"; ?></Image>
+<?php elseif (preg_match("/.png$/", $icon)): ?>
+ <Image height="64" width="64" type="image/png"><?php echo "{$site_url}$icon"; ?></Image>
<?php endif; ?>
<?php if (isset($tags)): ?>
<Tags><?php echo $tags; ?></Tags>