]> git.mxchange.org Git - friendica.git/commitdiff
Load plugin info from plugin file. Show README.md or README from plugin dir in plugin...
authorFabio Comuni <fabrix.xm@gmail.com>
Tue, 14 Jun 2011 12:21:43 +0000 (14:21 +0200)
committerFabio Comuni <fabrix.xm@gmail.com>
Tue, 14 Jun 2011 12:21:43 +0000 (14:21 +0200)
addon/oembed/oembed.php
boot.php
mod/admin.php
view/admin_plugins.tpl
view/admin_plugins_details.tpl

index a0a0239aaf992fc8b04a763bf0b841704356e6f6..f5be44194c139bb7924602b783ff255f40862ca2 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
- * oembed plugin
- * 
- * oEmbed is a format for allowing an embedded representation of a URL on third party sites
- * http://www.oembed.com/
- * 
+ * Name: OEmbed
+ * Description: OEmbed is a format for allowing an embedded representation of a URL on third party sites http://www.oembed.com/
+ * Version: 1.2
+ * Author: Fabio Comuni <http://kirgroup.com/profile/fabrix>
  */
 
 require_once('include/oembed.php');
index 42b0ca41e67f4c38ece559aaca18f8b84876f367..5d45de36f11aa5af13634fa9191674c59eb7f949 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -2828,3 +2828,55 @@ function is_site_admin() {
        return false;
 }}
 
+/*
+ * parse plugin comment in search of plugin infos.
+ * like
+ *     
+ *      * Name: Plugin
+ *   * Description: A plugin which plugs in
+ *      * Version: 1.2.3
+ *   * Author: John <profile url>
+ *   * Author: Jane <email>
+ *   *
+ */
+
+if (! function_exists('get_plugin_info')){
+function get_plugin_info($plugin){
+       if (!is_file("addon/$plugin/$plugin.php")) return false;
+       
+       $f = file_get_contents("addon/$plugin/$plugin.php");
+       $r = preg_match("|/\*.*\*/|msU", $f, $m);
+       
+       $info=Array(
+               'name' => $plugin,
+               'description' => "",
+               'author' => array(),
+               'version' => ""
+       );
+       
+       if ($r){
+               $ll = explode("\n", $m[0]);
+               foreach( $ll as $l ) {
+                       $l = trim($l,"\t\n\r */");
+                       if ($l!=""){
+                               list($k,$v) = array_map("trim", explode(":",$l,2));
+                               $k= strtolower($k);
+                               if ($k=="author"){
+                                       $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m);
+                                       if ($r) {
+                                               $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]);
+                                       } else {
+                                               $info['author'][] = array('name'=>$v);
+                                       }
+                               } else {
+                                       if (array_key_exists($k,$info)){
+                                               $info[$k]=$v;
+                                       }
+                               }
+                               
+                       }
+               }
+               
+       }
+       return $info;
+}}
index e40c5039624b44702adcdadc1fd5a11b6ea048f0..6386e6ebce2b8dcc94189f98472117b439ac0fb0 100644 (file)
@@ -340,7 +340,7 @@ function admin_page_plugins(&$a){
                        return; // NOTREACHED   
                }
                // display plugin details
-               
+               require_once('library/markdown.php');
 
                if (in_array($plugin, $a->plugins)){
                        $status="on"; $action= t("Disable");
@@ -348,6 +348,14 @@ function admin_page_plugins(&$a){
                        $status="off"; $action= t("Enable");
                }
                
+               $readme=Null;
+               if (is_file("addon/$plugin/README.md")){
+                       $readme = file_get_contents("addon/$plugin/README.md");
+                       $readme = Markdown($readme);
+               } else if (is_file("addon/$plugin/README")){
+                       $readme = "<pre>". file_get_contents("addon/$plugin/README") ."</pre>";
+               } 
+               
                $t = get_markup_template("admin_plugins_details.tpl");
                return replace_macros($t, array(
                        '$title' => t('Administration'),
@@ -357,7 +365,10 @@ function admin_page_plugins(&$a){
                
                        '$plugin' => $plugin,
                        '$status' => $status,
-                       '$action' => $action
+                       '$action' => $action,
+                       '$info' => get_plugin_info($plugin),
+                       
+                       '$readme' => $readme
                ));
        } 
         
@@ -373,9 +384,8 @@ function admin_page_plugins(&$a){
                foreach($files as $file) {      
                        if (is_dir($file)){
                                list($tmp, $id)=array_map("trim", explode("/",$file));
-                               // TODO: plugins info
-                               $name=$author=$description=$homepage="";
-                               $plugins[] = array( $id, (in_array($id,  $a->plugins)?"on":"off") , $name, $author, $description, $homepage);
+                               $info = get_plugin_info($id);
+                               $plugins[] = array( $id, (in_array($id,  $a->plugins)?"on":"off") , $info);
                        }
                }
        }
index d29665a0643dec669feea7a7172fb6b305ad4907..ee0fa67e6f66a7910a9ecc542c9c48b6c2157439 100644 (file)
@@ -4,10 +4,9 @@
                <ul id='pluginslist'>
                {{ for $plugins as $p }}
                        <li class='plugin $p.1'>
-                               <a class='toggle' href='$baseurl/admin/plugins/$p.0?a=t'><span class='icon $p.1'></span></a>
-                               <a href='$baseurl/admin/plugins/$p.0'>
-                                       <span class='name'>$p.0</span>
-                               </a>
+                               <a class='toggleplugin' href='$baseurl/admin/plugins/$p.0?a=t'><span class='icon $p.1'></span></a>
+                               <a href='$baseurl/admin/plugins/$p.0'><span class='name'>$p.2.name</span></a> - <span class="version">$p.2.version</span>
+                                       <div class='desc'>$p.2.description</div>
                        </li>
                {{ endfor }}
                </ul>
index 7e2e9552102d573c7a2bd45f5c9031a1b99e5abd..acb3d28628f827774819d465591aa0588df9a4e6 100644 (file)
@@ -1,7 +1,19 @@
 <div id='adminpage'>
        <h1>$title - $page</h1>
        
-       <p><span class='icon $status'></span> $plugin</p>
+       <p><span class='toggleplugin icon $status'></span> $info.name - $info.version : <a href="$baseurl/admin/plugins/$plugin/?a=t">$action</a></p>
+       <p>$info.description</p>
+       <p>
+       {{ for $info.author as $a }}
+       <a href="$a.link">$a.name</a> 
+       {{ endfor }}
+       </p>
        
-       <p><a href="$baseurl/admin/plugins/$plugin/?a=t">$action</a></p>
+
+       {{ if $readme }}
+       <h3>Readme</h3>
+       <div id="plugin_readme">
+               $readme
+       </div>
+       {{ endif }}
 </div>