diff options
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | config.ini.sample | 45 | ||||
-rw-r--r-- | languages/en.php | 19 | ||||
-rw-r--r-- | views/default/plugins/opensearch/settings.php | 97 | ||||
-rw-r--r-- | views/xml/opensearch/description.php | 42 |
5 files changed, 143 insertions, 63 deletions
@@ -8,9 +8,8 @@ the Wikipedia page on OpenSearch at http://en.wikipedia.org/wiki/OpenSearch INSTALL ------------- - * Rename config.ini.sample to config.ini - * Edit config.ini to reflect your site * Activate the plugin + * Edit OpenSearch settings in administration pages to reflect your site USAGE ------------- diff --git a/config.ini.sample b/config.ini.sample deleted file mode 100644 index 770023186..000000000 --- a/config.ini.sample +++ /dev/null @@ -1,45 +0,0 @@ -; OpenSearch configuration - -; ShortName -; Contains a brief human-readable title that identifies this search engine. -; 16 characters or less of plain text. -; Required -shortname = "Elgg" - -; Description -; Contains a human-readable text description of the search engine. -; 1024 characters or less of plain text. -; Required -description = "Elgg search engine" - -; LongName -; Contains an extended human-readable title that identifies this search engine. -; 48 characters or less of plain text. -;longname = "" - -; Image -; Contains a URL that identifies the location of an image that can be used -; in association with this search content. Can be either a 16x16 ico or -; 64x64 png or both. Clients will choose the image that best fits the -; display area. The value should be relative to your Elgg root. -ico = "_graphics/favicon.ico" -;png = "" - -; Tags -; Contains a set of words that are used as keywords to identify and categorize -; this search content. Tags must be a single word and are delimited by the -; space character (' '). -; 256 characters or less, space delimited tags -;tags = "test search elgg" - -; Language -; Contains a string that indicates that the search engine supports search -; results in the specified language. -; * or codes according to XML 1.0 Language Identification -lang[] = "en-us" - -; Query -; Test query available to clients. -; Clients can submit this as a test query to ensure that the OpenSearch -; interface works. -;query = "test" diff --git a/languages/en.php b/languages/en.php index 011e5d0b5..9a77f362b 100644 --- a/languages/en.php +++ b/languages/en.php @@ -5,7 +5,24 @@ $english = array( 'opensearch:title' => "Search: %s", - 'opensearch:description' => "Search results for \"%s\"", + 'opensearch:description' => "Search results for \"%s\"", + 'opensearch:engine' => "%s Search Engine", + + 'opensearh:settings:shortname' => "Short name", + 'opensearh:settings:desc' => "Description", + 'opensearh:settings:longname' => "Long name", + 'opensearh:settings:icon' => "Icon", + 'opensearh:settings:tags' => "Tags", + 'opensearh:settings:lang' => "Language", + 'opensearh:settings:query' => "Query", + 'opensearh:settings:shortname:description' => "Contains a brief human-readable title that identifies this search engine. 16 characters or less of plain text. <strong>Required</strong>", + 'opensearh:settings:desc:description' => "Contains a human-readable text description of the search engine. 1024 characters or less of plain text. <strong>Required</strong>", + 'opensearh:settings:longname:description' => "Contains an extended human-readable title that identifies this search engine. 48 characters or less of plain text.", + 'opensearh:settings:icon:description' => "Contains a URL that identifies the location of an image that can be used in association with this search content. Can be either a 16x16 ico or 64x64 png or both. Clients will choose the image that best fits the display area. The value should be relative to your Elgg root.", + 'opensearh:settings:tags:description' => "Contains a set of words that are used as keywords to identify and categorize this search content. Tags must be a single word and are delimited by the space character (' '). 256 characters or less, space delimited tags", + 'opensearh:settings:lang:description' => "Contains a string that indicates that the search engine supports search results in the specified language. * or codes according to XML 1.0 Language Identification", + 'opensearh:settings:query:description' => "Test query available to clients. Clients can submit this as a test query to ensure that the OpenSearch interface works.", + ); add_translation("en", $english); 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> |