[pLog-svn] r4274 - in plugins/branches/lifetype-1.1/unported: . currentlyaddictedto currentlyaddictedto/class currentlyaddictedto/class/action currentlyaddictedto/class/dao currentlyaddictedto/template-example currentlyaddictedto/template-example/grey currentlyaddictedto/templates

reto at devel.lifetype.net reto at devel.lifetype.net
Thu Nov 9 21:47:26 GMT 2006


Author: reto
Date: 2006-11-09 21:47:25 +0000 (Thu, 09 Nov 2006)
New Revision: 4274

Added:
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/README.txt
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/cat-presentation.txt
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoaction.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoselectaction.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_book.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_item.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_music.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/lists.txt
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/plugincurrentlyaddictedto.class.php
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/grey/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/grey/header.template
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_book.template
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_music.template
   plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/select.template
Log:
shamelessly copied this plugin from the download link, the author provided in the wiki. I think it's easier for us to keep the plugin alive if it's in the repository. (hope the author doesn't mind)

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/README.txt
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/README.txt	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/README.txt	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,89 @@
+++++++++++++++++++++++++++++++++++++++++++++++++
+Readme for the "CurrentlyAddictedTo Plugin" 
+version 1.0
+a plugin for pLog (v1.0)
+Developed by Palantir, radar at netpalantir.it
+
+See the plugin in action at my blog:
+http://www.netpalantir.it
+
+This plugin is released under the terms of the LGPL
+
+++++++++++++++++++++++++++++++++++++++++++++++++
+Warning: This is a pre version. It may work, but
+it may also nuke your blog.  BACK   UP   FIRST!!
+++++++++++++++++++++++++++++++++++++++++++++++++
+
+WHAT IT IS
+This is a plugin for pLog version 1. It will NOT work on any other pLog
+previous version, in particular 0.3x series. It will display a new
+administration section, called CAT, which will allow you to create lists of
+things you like, or music you are currently listening to, or books you are
+"addicted to". You will then change your templates, so to make them display
+those lists on your blog.
+
+HOW TO INSTALL (from scratch)
+1. Unpack the archive
+2. Locate the installation directory of your plog
+3. Copy the whole "currentlyaddictedto" directory into the plugin directory
+4. Change the permissions/ownership of all the files, according to your setup.
+   If you transfer files via FTP this could be unneccessary. All the files must 
+   be readable by the web server.
+5. Point your browser to your blog administration page, log in, click on: 
+   Control Center > Plugin center. The shoutbox plugin should be on your 
+   list. If it is not, try updating the page a few times, it seems to help ;)
+6. The first time you run it, the plugin should autodetect that a database setup
+   is neccessary, and create the table.
+   
+HOW TO UPGRADE FROM 0.x VERSION (pLog 0.3x)
+This is currently not supported. However, your previous data are NOT lost, so 
+if you need this, let me know, and I will show you how to retrieve your old
+data.
+
+HOW TO MAKE IT WORK
+First, integrate the plugin into the template.
+I am using the grey template, so this example refers to it.
+
+HOW TO USE IT
+There are some pre-defined typed lists, including books and music items. You
+can create your own lists, refer to lists.txt in the distribution. The user
+side of the plugin has no interaction with your visitors. It is just to display
+things. In the admin side, you setup your items.
+Access the CAT plugin from the Plugin Center in the Admin panel. A list of the
+present list is shown. Click on one of them. Your current items are presented.
+On the top, you can add a new item.
+- To add an item, clic on the Add New Item button. A new yellow item will
+appear on the top of the list. Fill in the form, and click on save. The item
+will become blue, this means that it has been saved.
+- To remove an item, use the expire button. The item will be hidden in the user
+area, and will be folded and listed at the bottom of the page. Those items are
+NOT deleted.
+- To get an expired item back, just click on it, in the list at the bottom of
+the page
+
+DOESN'T WORK? BUGS? WISHES? WHO TO CONTACT
+Please, use the pLog's bug reporting system. It's located at:
+http://bugs.plogworld.net
+Otherwise, send me a mail: radar at netpalantir.it
+I must admit I don't read plogworld forum regularly, so if you post there,
+please let me know by mail as well.
+
++++++++++++++++++++++++++++++++++++++++++++++++
+
+TODO:
+- connection to resources (in particular, book and album covers)
+- communication with Amazon, for ISBN quick lookup
+- better handling of "banner" and "category has no items" messages (now they are
+  hardcoded in the classes!)
+- error hadling on the admin side (for now there is no error handling at all)
+- permanent deletion of items
+
++++++++++++++++++++++++++++++++++++++++++++++++
+
+CHANGELOG:
+v1.00 For pLog 1.0 Rewritten from scratch. New architecture.
+
+v0.x for pLog 0.3
+
+
+

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/cat-presentation.txt
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/cat-presentation.txt	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/cat-presentation.txt	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,18 @@
+Great news ;-)
+I have an untested version ready. Untested means that I have installed in on my local development site and on my public website without problems, but I have not used it exstensively, so I can't be sure that there are no bugs. I am starting using it now, so if you can, wait a week or so... I've made this in a hurry, so probably there _are_.
+
+The plugin has been rewritten *from scratch* in order to make it *much* more flexible, and as similar as possible to the screenshots I have found of MovableType TypePad (I hope I am not infringing any copyright, anyway AFAIK a site layout is not copyrigtable...)
+
+This plugin features something very unique (and quite crazy, I know) which is "plugins for plugin": you can create your own "typed list" in a relatively easy way. Do you want a list to feature your stamps collection, your favourite pets, or your girlfiends? All you have to do is to write a very simple stub class, with the data you want to save, and to write the template of the input form (this is very easy since you have the music template at hand, and for simple things all you have to do is to change the fields names). If this sounds strange to you, try following the readme included in the distribution, or just drop me a (detailed!!) description of the class you need, and (sooner or later ;-) I will write it for you.
+
+Installation steps are as easy as unpacking the archive and altering your templates. As always, DO backup your database first: a dump will save your data ;) I have not followed the previous version naming, but even if I did, you would have to change everything anyway, because of the new structure of the plugin. As usual, I am including the gray template example.
+
+Any feedback is appreciated. Please let me know if you have problems, and about the bugs you have found. I will try to fix them quickly.
+
+To be done for the next versions: 
+- connection to resources (in particular, book and albums covers)
+- communication with Amazon, for ISBN quick lookup
+- better handling of "banner" and "category has no items" messages (now they are hardcoded!)
+- error hadling on the admin side (for now there is no error handling at all)
+- permanent deletion of items
+

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoaction.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoaction.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoaction.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,91 @@
+<?php
+
+    include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+    include_once( PLOG_CLASS_PATH."class/view/admin/adminplugintemplatedview.class.php" );
+    include_once( PLOG_CLASS_PATH."plugins/currentlyaddictedto/class/dao/cat_item.class.php" );
+
+    foreach (glob(PLOG_CLASS_PATH . "/plugins/currentlyaddictedto/class/dao/cat_*.php") as $filename) {
+        include_once($filename);
+    }
+
+    class PluginCurrentlyaddictedtoAction extends AdminAction {
+        
+        function PluginCurrentlyaddictedtoAction( $actionInfo, $request ) {
+            $this->AdminAction( $actionInfo, $request );
+        }
+        
+        function perform() {
+            // ok, I know, I KNOW! :D
+            global $_POST, $_GET;
+
+            //print_r($_POST);
+
+            // load some configuration settings
+            $blogSettings = $this->_blogInfo->getSettings();
+
+            $classType = $this->_request->getValue('class_type');
+            
+            if(!$classType)
+                die('No class type set!');
+
+            //if(!$blogSettings->getValue("plugin_shoutbox_dbok") || $blogSettings->getValue( "plugin_shoutbox_version") != '0.12') {
+            //    header('Location: admin.php?op=setupShoutbox');
+            //    exit();
+            //}
+
+            if($this->_request->getValue('sub_op') == 'modifyCATItem') {
+                eval("\$item = new $classType();");
+                $item->fromForm($_POST);
+                $item->init($_POST, $this->_blogInfo->getId(), $this->blogId, $blogSettings);
+                $item->save();
+            }
+            else if($this->_request->getValue('sub_op') == 'expireCATItem') {
+                eval("\$item = new $classType();");
+                $item->fromForm($_POST);
+                $item->init($_POST, $this->_blogInfo->getId(), $this->blogId, $blogSettings);
+                $item->expire();
+            }
+            else if($this->_request->getValue('sub_op') == 'unexpire') {
+                $itemFetcher = new CAT_ItemsFetcher($this->_blogInfo->getId(), $blogSettings);
+                $itemsFetched = $itemFetcher->getItems($classType, false, $this->_request->getValue('id'));
+                $item = $itemsFetched[0];
+                $item->unexpire();
+            }
+            else if($this->_request->getValue('sub_op') == 'rate') {
+                eval("\$item = new $classType();");
+                $item->init($_GET, $this->_blogInfo->getId(), $this->blogId, $blogSettings);
+                $item->setRate($this->_request->getValue('rate'));
+            }
+            else if($this->_request->getValue('sub_op') == 'additem') {
+                eval("\$item = new $classType();");
+                    
+                $item->init(array('id'=>0), $this->_blogInfo->getId(), $this->blogId, $blogSettings);
+                $addArray = array($item);
+            }
+            
+            // Get the entries
+            $itemFetcher = new CAT_ItemsFetcher($this->_blogInfo->getId(), $blogSettings);
+
+            $itemsFetched = array_merge($addArray, $itemFetcher->getItems($classType, true));
+            //print_r($itemsFetched);
+            //$itemsFetched[0]->save();
+            
+            $expiredItems = $itemFetcher->getItems($classType, false);
+
+            $fullQuery = "class_type=$classType&" .
+                         "op=Currentlyaddictedto";
+            
+            // create a view and export the settings to the template
+            $this->_view = new AdminPluginTemplatedView( $this->_blogInfo, "currentlyaddictedto", strtolower($classType), true );
+            
+            $this->_view->setValue("items", $itemsFetched);
+            $this->_view->setValue("classType", $classType);
+            $this->_view->setValue("expiredItems", $expiredItems);
+            $this->_view->setValue("fullQuery", $fullQuery);
+
+            $this->setCommonData();
+            
+            return true;
+        }
+}
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoselectaction.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoselectaction.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/action/plugincurrentlyaddictedtoselectaction.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,38 @@
+<?php
+
+    include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+    include_once( PLOG_CLASS_PATH."class/view/admin/adminplugintemplatedview.class.php" );
+
+    include_once( PLOG_CLASS_PATH."plugins/currentlyaddictedto/class/dao/cat_item.class.php" );
+
+    foreach (glob(PLOG_CLASS_PATH . "/plugins/currentlyaddictedto/class/dao/cat_*.php") as $filename) {
+        include_once($filename);
+    }
+
+    class PluginCurrentlyaddictedtoSelectAction extends AdminAction {
+
+       
+        function PluginCurrentlyaddictedtoSelectAction( $actionInfo, $request ) {
+            $this->AdminAction( $actionInfo, $request );
+        }
+        
+        function perform() {
+            // create a view and export the settings to the template
+            $this->_view = new AdminPluginTemplatedView( $this->_blogInfo, "currentlyaddictedto", "select", true );
+
+            foreach (glob(PLOG_CLASS_PATH . "/plugins/currentlyaddictedto/class/dao/cat_*.php") as $filename) {
+                $className = "CAT_" . ucfirst(str_replace('cat_', '', basename(str_replace('.class.php', '', $filename))));
+                if($className != 'CAT_Item') {
+                    eval("\$item = new $className();");
+                    $banners[$className] = $item->getBanner();
+                }
+            }
+
+            $this->_view->setValue("banners", $banners);
+            
+            $this->setCommonData();
+            
+            return true;
+        }
+}
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_book.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_book.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_book.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,71 @@
+<?
+
+class CAT_Book extends CAT_Item {
+    var $title;
+    var $author;
+    var $year;
+    var $publisher;
+    var $notes;
+    var $amazonLink;
+
+    function CAT_Book() {
+    }
+
+    function getBanner() {
+        return 'My books';
+    }
+
+    function getEmptyMessage() {
+        return "No items for the moment";
+    }
+       
+    function getClass() {
+        return 'CAT_Book';
+    }
+
+    function isRateable() {
+        return true;
+    }
+
+    function getData() {
+        $a = array();
+        
+        $a['title'] = $this->title;
+        $a['author'] = $this->author;
+        $a['year'] = $this->year;
+        $a['publisher'] = $this->publisher;
+        $a['notes'] = $this->notes;
+        $a['amazonLink'] = $this->amazonLink;
+
+        return serialize($a);
+    }
+
+    function setData($s) {
+        $a = unserialize($s);
+        
+        $this->title = $a['title'];
+        $this->author = $a['author'];
+        $this->year = $a['year'];
+        $this->publisher = $a['publisher'];
+        $this->notes = $a['notes'];
+        $this->amazonLink = $a['amazonLink'];
+
+        // do NOT set the permalink here!!
+        // NO: ---> $this->permalink = $a['permalink']; !!!
+    }
+
+    function fromForm($a) {
+        $this->title = $a['title'];
+        $this->author = $a['author'];
+        $this->year = $a['year'];
+        $this->publisher = $a['publisher'];
+        $this->notes = $a['notes'];
+        $this->amazonLink = $a['amazonLink'];
+
+        // must be here, if you want a permalink.
+        // inherited from superclass
+        $this->permalink = $a['permalink'];
+    }
+}
+
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_item.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_item.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_item.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,255 @@
+<?php
+
+include_once( PLOG_CLASS_PATH."class/dao/model.class.php" );
+
+include_once( PLOG_CLASS_PATH."plugins/currentlyaddictedto/class/dao/cat_music.class.php" );
+
+/**
+* schema of the table, so that we can tell ADOdb to create it
+* automatically for us
+*/
+/*
+define( ATOM_PASSWORDS_DB_SCHEMA,
+        "user_id I(10) NOTNULL,
+            password C(32) NOTNULL DEFAULT ''" );
+*/
+
+             
+class CAT_ItemsFetcher extends Model {
+
+    var $id;
+    var $blogId;
+    
+    var $blogSettings;
+
+    var $resultCounter;
+    var $itemsResult;
+    var $currentPage;
+
+    function CAT_ItemsFetcher($blogId, $blogSettings) {
+        $this->blogSettings = $blogSettings;
+    
+        /* Modelize it! */
+        $this->Model();
+
+        /* Check Setup */
+        $this->createTable();
+    
+        /* Initialization */
+        $this->blogId = $blogId;
+    }
+
+    
+    ###########################################################
+    # Database setup section. To be migrated to ADODB, but for the moment I can't get
+    # it working :(
+    function createTable() {
+        $dbPrefix = $this->getPrefix();
+
+        $sql = "SELECT * FROM {$dbPrefix}cat_items";
+        if( !$this->_db->Execute($sql) ) {
+            //echo("Seems there is no such a table! $sql");
+            // Make new setup
+            $sql = "
+CREATE TABLE {$dbPrefix}cat_items (
+    id INT(11) PRIMARY KEY auto_increment,
+    blogid INT(11) NOT NULL,
+    startdate DATETIME,
+    enddate DATETIME DEFAULT NULL,
+    permalink TEXT,
+    reslink TEXT,
+    rate INT NOT NULL DEFAULT 3,
+    data TEXT,
+    class TEXT
+);
+";
+            if( !$this->_db->Execute($sql) ) {
+                die("The database setup failed!<br> <pre>". $sql . '</pre>');
+            }
+        }
+    }
+    
+
+    function getItems($classType, $notExpired = true, $ids = false) {
+    
+        $sql =  "SELECT * FROM " . $this->getPrefix() . "cat_items ";
+        $sql .= "WHERE blogid =  {$this->blogId} AND class = '$classType' ";
+        if($notExpired)
+            $sql .= "AND endDate IS NULL ";
+        else
+            $sql .= "AND endDate IS NOT NULL ";
+
+        if($ids)
+            $sql .= "AND id IN($ids) ";
+            
+        $sql .= "ORDER BY enddate, startdate DESC";
+
+        //echo($sql . '<br>');
+
+        $this->itemsResult = $this->Execute($sql);
+        if(!$this->itemsResult)
+            die("Grr $sql");
+
+        while($itemData = $this->itemsResult->FetchRow()) {
+            eval("\$item = new $classType();");
+            $item->init($itemData, $this->blogId, $this->blogSettings);
+            $item->setData($itemData['data']);
+            $res[] = $item;
+        }
+        
+        return $res;
+    }
+
+    function getLastPage() {
+        $sql =  "SELECT COUNT(*) as cnt FROM " . $this->getPrefix() . "cat_items ";
+        $res = $this->Execute($sql);
+        if(!$res)
+            return 0;
+        $cnt = $res->FetchRow();
+        if($cnt['cnt'] > 0)
+            $cnt = floor($cnt['cnt'] / 15);
+        return $cnt;
+    }
+
+
+    function thinkAndDo() {
+        return $this->getItemsArray();
+    }
+}
+
+class CAT_Item extends Model {
+    var $id;
+    var $blogId;
+    var $startDate;
+    var $endDate;
+    var $permalink;
+    var $reslink;
+    var $rate;
+
+    var $blogSettings;
+    var $blogId;
+
+    function init($itemData, $blogId, $blogSettings) {
+        $this->id = $itemData['id'];
+        $this->startDate = $itemData['startdate'];
+        $this->endDate = $itemData['enddate'];
+        $this->permalink = $itemData['permalink'];
+        $this->reslink = $itemData['reslink'];
+        $this->rate = $itemData['rate'];
+    
+        $this->blogSettings = $blogSettings;
+    
+        /* Modelize it! */
+        $this->Model();
+    
+        /* Initialization */
+        $this->blogId = $blogId;
+    }
+
+    function expire() {
+        $this->endDate = date('Y-m-d H:m');
+        $this->save();
+    }
+    function unexpire() {
+        $this->endDate = false;
+        $this->save();
+    }
+
+    function setRate($r) {
+        if(!$this->isRateable())
+            return false;
+            
+        $sql =  "UPDATE " . $this->getPrefix() . "cat_items SET rate = $r WHERE id = {$this->id}";
+        $result = $this->Execute($sql);
+         if(!$result) {
+            die("Sorry, coud not alter your item. $sql");
+        }
+    }
+
+    function save() {
+        if($this->id == 0)
+            $this->_saveNew();
+        else
+            $this->_update();
+    }
+
+    function _saveNew() {
+        $data = $this->getData();
+        $class = $this->getClass();
+
+        $this->startDate = date('Y-m-d H:m');
+
+        if(!$this->rate)
+            $this->rate = 3;
+    
+        $sql =  "INSERT INTO " . $this->getPrefix() . "cat_items (".
+                "blogId,
+                 permalink,
+                 reslink,
+                 rate,
+                 data,
+                 class,
+                 startdate
+                 ) VALUES (
+                 {$this->blogId},
+                 '{$this->permalink}',
+                 '{$this->reslink}',
+                 {$this->rate},
+                 '$data',
+                 '$class',
+                 '{$this->startDate}'
+                 )";
+        //echo($sql);
+        $result = $this->Execute($sql);
+        if(!$result) {
+            echo("Sorry, coud not add your item. $sql");
+            return false;
+        }
+    }
+    
+    function _update() {
+        $data = $this->getData();
+        $class = $this->getClass();
+
+         if(!$this->endDate || $this->endDate == '')
+            $endDate = 'NULL';
+        else
+            $endDate = "'{$this->endDate}'";
+
+        if(!$this->rate)
+            $this->rate = 3;
+    
+        $sql =  "UPDATE " . $this->getPrefix() . "cat_items SET ".
+                "permalink = '{$this->permalink}',
+                 reslink = '{$this->reslink}',
+                 rate = {$this->rate},
+                 data = '$data',
+                 enddate = $endDate
+                 WHERE id = {$this->id}";
+        $result = $this->Execute($sql);
+        //echo($sql);
+        if(!$result) {
+            echo("Sorry, coud not alter your item. $sql");
+            return false;
+        }
+    }
+
+
+    function remove() {}
+
+    //function getData() {}
+    function getClass() {}
+    function isRateable() {}
+
+    function getRatingHtml() {
+        for($i = 1; $i <= 5; $i++) {
+            if($i != $this->rate)
+                $res .= '<a href="?op=Currentlyaddictedto&sub_op=rate&class_type=' . $this->getClass() . '&rate=' .$i.'&id='.$this->id.'">' .$i.'</a> ';
+            else
+                $res .= "<b>{$this->rate}</b> ";
+        }
+        return $res;
+    }
+}
+
+?>

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_music.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_music.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/class/dao/cat_music.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,61 @@
+<?
+
+class CAT_Music extends CAT_Item {
+    var $title;
+    var $album;
+    var $author;
+    var $notes;
+
+    function CAT_Music() {
+        //die('OK');
+    }
+
+    function getBanner() {
+        return 'Music';
+    }
+
+    function getEmptyMessage() {
+        return "No items for the moment";
+    }
+       
+    function getClass() {
+        return 'CAT_Music';
+    }
+
+    function isRateable() {
+        return true;
+    }
+
+    function getData() {
+        $a = array();
+        
+        $a['title'] = $this->title;
+        $a['album'] = $this->album;
+        $a['author'] = $this->author;
+        $a['notes'] = $this->notes;
+
+        return serialize($a);
+    }
+
+    function setData($s) {
+        $a = unserialize($s);
+        
+        $this->title = $a['title'];
+        $this->album = $a['album'];
+        $this->author = $a['author'];
+        $this->notes = $a['notes'];
+    }
+
+    function fromForm($a) {
+        $this->title = $a['title'];
+        $this->album = $a['album'];
+        $this->author = $a['author'];
+        $this->notes = $a['notes'];
+
+        // must be here, if you want a permalink.
+        // inherited from superclass
+        $this->permalink = $a['permalink'];
+    }
+}
+
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/lists.txt
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/lists.txt	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/lists.txt	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,83 @@
+How to create your own typed list
+This will illustrate all the steps needed to create a Books collection. It may
+seem to be a lot of work, but it's only becausa I have tried to explain this in
+detail :) 
+
+*Important Note*: case IS important. CAT_Music is DIFFERENT from cat_music!!!
+
+1. Copy plugins/currentlyaddictedto/class/dao/cat_music.class.php to
+cat_book.class.php
+(at this point, your web site gets down until either you complete this procedure
+or you delete CAT_books.class.php)
+
+2. Open cat_book.class.php and change line 2 to: 
+class CAT_Book extends CAT_Item {
+
+3. Now decide which data you want to save. Delete lines 4 to 7, and replace them
+with a list of your data. For example:
+var $title;
+var $author;
+var $year;
+var $publisher;
+var $notes;
+var $amazonLink;
+
+We have added year and publisher, and deleted author. Some fields come for free
+(you don't have to add them) like the first permalink. You can add more links if
+you want: we will add an amazonLink pointing to the amazon book entry.
+
+4. Now, replace line 11 with
+function CAT_Book() {
+
+5. Change the banner, the empty message and the class type:
+Line 15: return 'My books';
+Line 19: return "Not reading anything now";
+Line 23: return 'CAT_Book';
+
+6. Change the remaining functions so that all the data you have added are
+listed. For example:
+    function getData() {
+        $a = array();
+        
+        $a['title'] = $this->title;
+        $a['author'] = $this->author;
+        $a['year'] = $this->year;
+        $a['publisher'] = $this->publisher;
+        $a['notes'] = $this->notes;
+        $a['amazonLink'] = $this->amazonLink;
+
+        return serialize($a);
+    }
+
+   The rest should be as straightforward! Just pay attention to the permalinks,
+this is explained directly in the comments in the code.
+   
+7. Now you have to make the template for the admin area. Copy
+plugins/currentlyaddictedto/templates/cat_music.template to cat_book.template
+and open it.
+Then, locate this line: <h2>Music items</h2> and replace it with:
+<h2>My books</h2>
+
+8. You just have to change the fields listed there. A field is composed by a
+snippet like the followind. Delete it from the original, as it is refering to a
+field we have deleted:
+<tr>
+    <td>Album</td>
+    <td><input type="text" name="album" value="{$item->album}" /></td>
+</tr>
+
+and add instead the other fields we've added, like:
+<tr>
+    <td>Publisher</td>
+    <td><input type="text" name="publisher" value="{$item->publisher}" size=4
+/></td>
+</tr>
+
+9. Now you should see an item called like the banner you've set before in the
+CAT plugin items selection. If you do, try adding some items to see if
+everything works. Then move ahead to write the template on the user side. Just
+follow the gray example, it should be easy enough. 
+
+For your reference, the books list is included in the distribution.
+
+*******************************************************************
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/plugincurrentlyaddictedto.class.php
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/plugincurrentlyaddictedto.class.php	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/plugincurrentlyaddictedto.class.php	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,81 @@
+<?php
+
+// -- plugin manager stuff
+include_once( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );
+include_once( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
+
+// for the public side action
+include_once( PLOG_CLASS_PATH."class/action/blogaction.class.php" );
+include_once( PLOG_CLASS_PATH."class/view/errorview.class.php" );
+
+// for the admin side action
+include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+include_once( PLOG_CLASS_PATH."class/view/admin/adminerrorview.class.php" );
+
+// plugin self inclusions
+include_once( PLOG_CLASS_PATH."plugins/currentlyaddictedto/class/dao/cat_item.class.php" );
+foreach (glob(PLOG_CLASS_PATH . "/plugins/currentlyaddictedto/class/dao/cat_*.php") as $filename) {
+    include_once($filename);
+}
+    
+class PluginCurrentlyaddictedto extends PluginBase  {
+    var $s;
+
+    function PluginCurrentlyaddictedto()
+    {
+        
+        $this->PluginBase();
+
+        $this->desc    = "Currentlyaddictedto plugin: tell me more about you";
+        $this->author  = "Palantir (radar at netpalantir.it)";
+        $this->id      = "Currentlyaddictedto";
+        $this->locales = Array();
+
+        $this->registerAdminAction("Currentlyaddictedto", "PluginCurrentlyaddictedtoAction" );
+        $this->registerAdminAction("CurrentlyaddictedtoSelect", "PluginCurrentlyaddictedtoSelectAction" );
+        //$this->registerAdminAction("modifyCATItem", "PluginCurrentlyaddictedtoAction" );
+        //$this->registerAdminAction( "deleteCATItem", "PluginCurrentlyaddictedtoUpdateConfigAction" );
+        //$this->registerAdminAction( "deleteShouts", "PluginCurrentlyaddictedtoDeleteShoutsAction" );
+        //$this->registerAdminAction( "setupCurrentlyaddictedto", "PluginCurrentlyaddictedtoSetupAction" );
+        
+        $this->addMenuEntry( "/menu/controlCenter/manageSettings", "CAT", "?op=CurrentlyaddictedtoSelect", "" );
+    }
+
+    function getItems() {
+        foreach (glob(PLOG_CLASS_PATH . "/plugins/currentlyaddictedto/class/dao/cat_*.php") as $filename) {
+            if(ereg('cat\_([a-zA-Z]+)\.class\.php', basename($filename), $regs)) {
+                $className = $regs[1];
+                if($className != 'item') {
+                    $className = $regs[1];
+                    $if = new CAT_ItemsFetcher($this->blogInfo->getId(),
+                                               $this->blogSettings);
+                    $items[$className] = $if->getItems('CAT_' . ucfirst($className), true);
+                }
+            }
+        }
+        return $items;
+    }
+
+    function getItemsByCategory($className) {
+        $if = new CAT_ItemsFetcher($this->blogInfo->getId(), $this->blogSettings);
+        $items = $if->getItems('CAT_' . ucfirst($className), true);
+        return $items;
+    }
+
+    function getBanner($className) {
+        eval ('$tmp = new ' . 'CAT_' . ucfirst($className) . "();");
+        return $tmp->getBanner();
+    }
+
+    function getEmptyMessage($className) {
+        eval ('$tmp = new ' . 'CAT_' . ucfirst($className) . "();");
+        return $tmp->getEmptyMessage();
+    }
+
+    function process( $eventType, $params )
+    {			
+        // return the content as it came, as the caller class probably expected us to do
+        // something with it...
+        return $params;
+    }
+}
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/grey/header.template
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/grey/header.template	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/template-example/grey/header.template	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$locale->getLanguageId()}" 
+      lang="{$locale->getLanguageId()}" dir="{$locale->getDirection()}">
+<head>
+ <meta http-equiv="Content-Type" content="text/html;charset={$locale->getCharset()}" />
+ <meta name="generator" content="{$version}" />
+ <meta http-equiv="Content-Language" content="{$locale->getLanguageId()}" />
+ <title>{$blog->getBlog()}{$postPageTitle}</title>
+ <link rel="stylesheet" title="Default" href="{$url->getTemplateFile("grey.css")}" type="text/css" />
+ <link rel="alternate" type="text/xml" title="RSS 2.0" href="{$url->rssLink("rss20")}" />
+ <link rel="alternate" type="text/xml" title="RSS 1.0" href="{$url->rssLink("rss10")}" />
+ <link rel="alternate" type="text/xml" title="RSS 0.90" href="{$url->rssLink("rss090")}" />
+ <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="{$url->rssLink("atom")}" />
+</head>
+ <body> 
+  <p class="Upgrade">This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please <a href="http://www.webstandards.org/upgrade/" title="The Web Standards Project's Browser Upgrade initiative">upgrade</a> to a browser that supports web standards. It's free and painless.</p>
+  <div id="Container">
+  <div id="Top"><h1>{$blog->getBlog()}</h1></div>
+  <div id="Topmenu">
+    <a href="{$url->blogLink()}">{$locale->tr("main")}</a> |
+    <a href="{$url->albumLink()}">{$locale->tr("albums")}</a> |
+    <a href="{$url->getAdminUrl()}">{$locale->tr("admin")}</a> 
+  </div>
+  <div id="Main">
+  <div id="Sidebar-l">
+   <div class="Sidetitle">
+    <h4>{$locale->tr("calendar")}</h4>
+   </div>
+   <div class="calendar">
+    {$calendar}
+   </div>
+   <div class="Sidetitle">
+    <h4>{$locale->tr("recently")}</h4>
+   </div>
+   <p>
+    {foreach from=$recentposts item=recentpost}
+    <a title="{$recentpost->getText()|truncate:150:"..."|strip_tags|escape}" href="{$url->postLink($recentpost)}">{$recentpost->getTopic()}</a><br/>
+    {/foreach}
+   </p>
+
+
+  {assign var="music_items" value=$currentlyaddictedto->getItemsByCategory('music')}
+  <div class="Sidetitle">
+    <h4>{$currentlyaddictedto->getBanner('music')}</h4>
+   </div>
+   <p>
+        {if count($music_items) == 0}
+            $currentlyaddictedto->getEmptyMessage('music')
+        {/if}
+        
+        {foreach from=$music_items item=anitem}
+            "<b>{$anitem->title}"</B>
+            {if $anitem->author != ""}
+                by {$anitem->author}
+            {/if}
+            
+            {if $anitem->album != ""}
+                on {$anitem->album}
+            {/if}
+
+            ({$anitem->rate}*)<br/>
+
+            {if $anitem->notes != ""}
+                <font color="#8B917B">{$anitem->notes}</font><br/>
+            {/if}
+
+            {if $anitem->permalink != ""}
+                <A href="{$anitem->permalink}">(More)</A><br/>
+            {/if}
+        {/foreach} 
+   </p>
+
+   {assign var="books" value=$currentlyaddictedto->getItemsByCategory('book')}
+  <div class="Sidetitle">
+    <h4>{$currentlyaddictedto->getBanner('music')}</h4>
+   </div>
+   <p>
+            {if count($books) == 0}
+                {$currentlyaddictedto->getEmptyMessage('book')}
+            {/if}
+            
+            {foreach from=$books item=anitem}
+                "<b>{$anitem->title}"</B>
+                {if $anitem->author != ""}
+                    by {$anitem->author}
+                {/if}
+    
+                ({$anitem->rate}*)<br/>
+    
+                {if $anitem->notes != ""}
+                    <font color="#8B917B">{$anitem->notes}</font><br/>
+                {/if}
+    
+                {if $anitem->permalink != ""}
+                    <A href="{$anitem->permalink}">(More)</A><br/>
+                {/if}
+            {/foreach} 
+   </p>
+
+  </div>
+  <div id="Content">
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_book.template
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_book.template	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_book.template	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,147 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=CAT title=$locale->tr("CAT")}
+
+{literal}
+<SCRIPT>
+var submitUsed = '';
+function doConfirm() {
+    if(submitUsed == 'del')
+        if(!confirm('Are you sure to delete? There is NO undo!')) 
+            return false;
+    return true;
+}
+
+function selectOp(id, w) {
+    document.getElementById("sub_op" + id).value = w;
+}
+</SCRIPT>
+
+<style>
+.alternate1 {
+    background-color: #DBE6FF;
+}
+
+.alternate2 {
+    background-color: white;
+}
+.alternate_new {
+    background-color: #FFF6B8;
+}
+</style>
+{/literal}
+
+<h2>My books</h2>
+
+<!--
+<fieldset class="inputField">
+   <legend>Nuova Risorsa</legend>
+          <div class="field" id="fileFields">
+    <label for="resourceFile_1">File</label>
+    <span class="required">*</span>
+    <div class="formHelp">File that will be added to the current blog. Use the "Add field" link to upload more than one file at the same time</div>  
+          <input type="file" id="resourceFile_1" name="resourceFile_1" />
+      <div id="marker" style="clear:none;"></div>
+      <a href="javascript:addElementToForm('fileFields','file','resourceFile','')">Add field</a>
+            
+  </div>
+-->
+
+<form method="post">
+    <fieldset class="inputField">
+        <legend>New item</legend>
+        <input type="hidden" id="sub_op" name="sub_op" value="additem" />
+        <input type="hidden" name="op" value="Currentlyaddictedto" />
+        <input type="submit" name="ok" value="Add a new item here">
+    </fieldset>
+</form>
+
+<br>
+
+
+    
+{assign var="altern" value="2"}
+{foreach from=$items item=item key=itemId}
+    {if $altern == 1}
+        {assign var="altern" value="2"}
+    {else}
+        {assign var="altern" value="1"}
+    {/if}
+
+    {if $item->id == 0}
+        {assign var="altern" value="_new"}
+    {/if}
+    
+    <fieldset class="inputField ">
+    <legend>Item</legend>
+    <table>
+    <tr class="alternate{$altern}">
+        <FORM method="POST">
+        <td width="150">
+            Image here (to be implemented)<br><br>
+            Rate this item:<br>
+            {$item->getRatingHtml()}
+        </td>
+        <td>
+            <table>
+                <tr>
+                    <td width="80">Title</td>
+                    <td><input type="text" name="title" value="{$item->title}" /></td>
+                </tr>
+                <tr>
+                    <td>Author</td>
+                    <td><input type="text" name="author" value="{$item->author}" /></td>
+                </tr>
+                <tr>
+                    <td>Year</td>
+                    <td><input type="text" name="year" value="{$item->year}" size=4 /></td>
+                </tr>
+                <tr>
+                    <td>Publisher</td>
+                    <td><input type="text" name="publisher" value="{$item->publisher}" size=4 /></td>
+                </tr>
+                <tr>
+                    <td>Link / permalink</td>
+                    <td><input type="text" name="permalink" value="{$item->permalink}" /></td>
+                </tr>
+                <tr>
+                    <td>Amazon Link</td>
+                    <td><input type="text" name="amazonLink" value="{$item->amazonLink}" /></td>
+                </tr>
+                <tr>
+                    <td>Notes</td>
+                    <td><textarea name="notes" rows="4" cols="50">{$item->notes}</textarea></td>
+                </tr>
+                <tr>
+                    <td colspan="2" align="center">
+                        <input type="hidden" name="id" value="{$item->id}" />
+                        <input type="hidden" name="class_type" value="{$classType}" />
+                        <input type="hidden" id="sub_op{$item->id}" name="sub_op" value="" />
+                        <input type="hidden" name="op" value="Currentlyaddictedto" />
+                        <input type="submit" name="add" value="Save" onClick='selectOp({$item->id}, "modifyCATItem")' />
+                        <input type="submit" name="del" value="Expire" onClick='selectOp({$item->id}, "expireCATItem")' />
+                    </td>
+                </tr>
+            </table>
+            
+
+          </td>
+
+        </FORM>
+    </tr>
+    </table>
+    </fieldset>
+{/foreach}
+
+<b>Expired items list</b> (click on an item to unexpire)<br>
+<ul>
+{foreach from=$expiredItems item=item key=itemId}
+    <li><a href="?{$fullQuery}&sub_op=unexpire&id={$item->id}">{$item->title} - {$item->author}</a></li>
+{/foreach}
+</ul>
+
+{if count($expiredItems) == 0}
+    No expired items
+{/if}
+
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_music.template
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_music.template	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/cat_music.template	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,139 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=CAT title=$locale->tr("CAT")}
+
+{literal}
+<SCRIPT>
+var submitUsed = '';
+function doConfirm() {
+    if(submitUsed == 'del')
+        if(!confirm('Are you sure to delete? There is NO undo!')) 
+            return false;
+    return true;
+}
+
+function selectOp(id, w) {
+    document.getElementById("sub_op" + id).value = w;
+}
+</SCRIPT>
+
+<style>
+.alternate1 {
+    background-color: #DBE6FF;
+}
+
+.alternate2 {
+    background-color: white;
+}
+.alternate_new {
+    background-color: #FFF6B8;
+}
+</style>
+{/literal}
+
+<h2>Music items</h2>
+
+<!--
+<fieldset class="inputField">
+   <legend>Nuova Risorsa</legend>
+          <div class="field" id="fileFields">
+    <label for="resourceFile_1">File</label>
+    <span class="required">*</span>
+    <div class="formHelp">File that will be added to the current blog. Use the "Add field" link to upload more than one file at the same time</div>  
+          <input type="file" id="resourceFile_1" name="resourceFile_1" />
+      <div id="marker" style="clear:none;"></div>
+      <a href="javascript:addElementToForm('fileFields','file','resourceFile','')">Add field</a>
+            
+  </div>
+-->
+
+<form method="post">
+    <fieldset class="inputField">
+        <legend>New item</legend>
+        <input type="hidden" id="sub_op" name="sub_op" value="additem" />
+        <input type="hidden" name="op" value="Currentlyaddictedto" />
+        <input type="submit" name="ok" value="Add a new item here">
+    </fieldset>
+</form>
+
+<br>
+
+
+    
+{assign var="altern" value="2"}
+{foreach from=$items item=item key=itemId}
+    {if $altern == 1}
+        {assign var="altern" value="2"}
+    {else}
+        {assign var="altern" value="1"}
+    {/if}
+
+    {if $item->id == 0}
+        {assign var="altern" value="_new"}
+    {/if}
+    
+    <fieldset class="inputField ">
+    <legend>Item</legend>
+    <table>
+    <tr class="alternate{$altern}">
+        <FORM method="POST">
+        <td width="150">
+            Image here (to be implemented)<br><br>
+            Rate this item:<br>
+            {$item->getRatingHtml()}
+        </td>
+        <td>
+            <table>
+                <tr>
+                    <td width="80">Title</td>
+                    <td><input type="text" name="title" value="{$item->title}" /></td>
+                </tr>
+                <tr>
+                    <td>Album</td>
+                    <td><input type="text" name="album" value="{$item->album}" /></td>
+                </tr>
+                <tr>
+                    <td>Author</td>
+                    <td><input type="text" name="author" value="{$item->author}" /></td>
+                </tr>
+                <tr>
+                    <td>Link / permalink</td>
+                    <td><input type="text" name="permalink" value="{$item->permalink}" /></td>
+                </tr>
+                <tr>
+                    <td>Notes</td>
+                    <td><textarea name="notes" rows="4" cols="50">{$item->notes}</textarea></td>
+                </tr>
+                <tr>
+                    <td colspan="2" align="center">
+                        <input type="hidden" name="id" value="{$item->id}" />
+                        <input type="hidden" name="class_type" value="CAT_Music" />
+                        <input type="hidden" id="sub_op{$item->id}" name="sub_op" value="" />
+                        <input type="hidden" name="op" value="Currentlyaddictedto" />
+                        <input type="submit" name="add" value="Save" onClick='selectOp({$item->id}, "modifyCATItem")' />
+                        <input type="submit" name="del" value="Expire" onClick='selectOp({$item->id}, "expireCATItem")' />
+                    </td>
+                </tr>
+            </table>
+            
+
+          </td>
+
+        </FORM>
+    </tr>
+    </table>
+    </fieldset>
+{/foreach}
+
+<b>Expired items list</b> (click on an item to unexpire)<br>
+<ul>
+{foreach from=$expiredItems item=item key=itemId}
+    <li><a href="?{$fullQuery}&sub_op=unexpire&id={$item->id}">{$item->title} - {$item->author}</a></li>
+{/foreach}
+</ul>
+
+{if count($expiredItems) == 0}
+    No expired items
+{/if}
+
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file

Added: plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/select.template
===================================================================
--- plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/select.template	2006-11-08 21:26:18 UTC (rev 4273)
+++ plugins/branches/lifetype-1.1/unported/currentlyaddictedto/templates/select.template	2006-11-09 21:47:25 UTC (rev 4274)
@@ -0,0 +1,16 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=CAT title=$locale->tr("CAT")}
+
+<ul class="menuTop">
+    <li class="Level_1">Select the list you want to edit</li>
+    <ul class="menuTop">
+        {foreach from=$banners item=item key=itemId}
+            <li class="Level_0"><a href="?op=Currentlyaddictedto&class_type={$itemId}">{$item}</a></li>
+        {/foreach}
+    </ul>
+</ul>
+
+
+
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file



More information about the pLog-svn mailing list