Changeset 4452

Show
Ignore:
Timestamp:
10/23/06 17:14:55 (2 years ago)
Author:
bergie
Message:

Feed deletion support, fix for broken OPML subscription

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/net.nemein.rss/config/manifest.inc

    r4308 r4452  
    11'name' => 'net.nemein.rss', 
    22'purecode' => true, 
    3 'version' => '2.0.0', 
     3'version' => '2.0.1', 
    44'state' => 'stable', 
    55'privileges' => array(), 
  • trunk/src/net.nemein.rss/documentation/CHANGES

    r4308 r4452  
    66  which might even break existing functionality. 
    77- All items marked with "+" represent completly new features. 
     8 
     92006-10-23 bergie 
     10  + Added support for deleting feeds 
     11  - Fixed OPML subscription 
    812 
    9132006-10-06 bergie 
  • trunk/src/net.nemein.rss/fetch.php

    r4308 r4452  
    409409            $item['title'] = $_MIDCOM->i18n->get_string('untitled', 'net.nemein.rss'); 
    410410 
    411             $item_date = $this->parse_item_date($item); 
     411            $item_date = net_nemein_rss_fetch::parse_item_date($item); 
    412412 
    413413            if (isset($item['description']))  
  • trunk/src/net.nemein.rss/locale/default.en.txt

    r4308 r4452  
    4646---STRING default author for items 
    4747Default author for items 
     48---STRINGEND 
     49 
     50---STRING delete feed 
     51Delete feed 
    4852---STRINGEND 
    4953 
     
    116120---STRINGEND 
    117121 
     122---STRING no items found in feed 
     123No items found in feed. 
     124---STRINGEND 
     125 
    118126---STRING opml file 
    119127OPML file 
     
    126134---STRING remote from feed 
    127135Remote from feed 
     136---STRINGEND 
     137 
     138---STRING remote item 
     139Item in feed 
    128140---STRINGEND 
    129141 
     
    172184---STRINGEND 
    173185 
    174 ---STRING no items found in feed 
    175 No items found in feed. 
     186---STRING local item 
     187Local copy of item 
    176188---STRINGEND 
    177189 
  • trunk/src/net.nemein.rss/locale/default.fi.txt

    r4308 r4452  
    4646---STRING default author for items 
    4747Uutisten oletuskirjoittaja 
     48---STRINGEND 
     49 
     50---STRING delete feed 
     51Poista syöte 
    4852---STRINGEND 
    4953 
     
    116120---STRINGEND 
    117121 
     122---STRING no items found in feed 
     123SyötteestÀ ei löytynyt uutisia. 
     124---STRINGEND 
     125 
    118126---STRING opml file 
    119127OPML-tiedosto 
     
    126134---STRING remote from feed 
    127135Luetaan lÀhteestÀ 
     136---STRINGEND 
     137 
     138---STRING remote item 
     139Uutinen syötteessÀ 
    128140---STRINGEND 
    129141 
     
    172184---STRINGEND 
    173185 
    174 ---STRING no items found in feed 
    175 SyötteestÀ ei löytynyt uutisia. 
     186---STRING local item 
     187Uutisen paikallinen kopio 
    176188---STRINGEND 
    177189 
  • trunk/src/net.nemein.rss/manage.php

    r4066 r4452  
    8080        $qb->add_constraint('node', '=', $this->_topic->id); 
    8181        $data['feeds'] = $qb->execute(); 
     82         
     83        $this->_update_breadcrumb_line($handler_id); 
    8284 
    8385        return true; 
     
    113115                ) 
    114116            ); 
     117            $data['feed_toolbar']->add_item 
     118            ( 
     119                array 
     120                ( 
     121                    MIDCOM_TOOLBAR_URL => "feeds/delete/{$feed->guid}", 
     122                    MIDCOM_TOOLBAR_LABEL => $_MIDCOM->i18n->get_string('delete feed', 'net.nemein.rss'), 
     123                    MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png', 
     124                    MIDCOM_TOOLBAR_ENABLED => $feed->can_do('midgard:delete'), 
     125                ) 
     126            ); 
    115127 
    116128            $qb = midcom_db_article::new_query_builder(); 
     129            $qb->add_constraint('topic', '=', $this->_topic->id); 
     130             
    117131            $data['feed_category'] = md5($feed->url); 
    118132            $qb->add_constraint('extra1', 'LIKE', "%|{$data['feed_category']}|%"); 
     
    187201 
    188202        // Single feed addition 
    189         if (array_key_exists('net_nemein_rss_manage_newfeed', $_POST))  
    190         { 
    191             if ($_POST['net_nemein_rss_manage_newfeed']['url'])  
    192             { 
    193                 $this->_subscribe_feed($_POST['net_nemein_rss_manage_newfeed']['url']); 
    194                 // TODO: display error messages 
    195                 // TODO: redirect user to edit page if creation succeeded 
    196             } 
     203        if (   array_key_exists('net_nemein_rss_manage_newfeed', $_POST) 
     204            && $_POST['net_nemein_rss_manage_newfeed']['url'])  
     205        { 
     206            $this->_subscribe_feed($_POST['net_nemein_rss_manage_newfeed']['url']); 
     207            // TODO: display error messages 
     208            // TODO: redirect user to edit page if creation succeeded 
    197209             
    198210            $_MIDCOM->relocate('feeds/list/'); 
     
    200212 
    201213        // OPML subscription list import support 
    202         $opml_file = null; 
    203         if (version_compare(phpversion(), '4.3.0', '>='))  
    204         { 
    205             if (   array_key_exists('net_nemein_rss_manage_opml', $_FILES)  
    206                 && is_uploaded_file($_FILES['net_nemein_rss_manage_opml']['tmp_name']))  
    207             { 
    208                 $opml_file = $_FILES['net_nemein_rss_manage_opml']['tmp_name']; 
    209             } 
    210         }  
    211         else  
    212         { 
    213             if (   array_key_exists('net_nemein_rss_manage_opml', $_POST)  
    214                 && is_uploaded_file($_POST['net_nemein_rss_manage_opml']['tmp_name']))  
    215             { 
    216                 $opml_file = $_REQUEST['net_nemein_rss_manage_opml']['tmp_name']; 
    217             }  
    218         } 
    219          
    220         if (!is_null($opml_file))  
    221         { 
     214        if (   array_key_exists('net_nemein_rss_manage_opml', $_FILES)  
     215            && is_uploaded_file($_FILES['net_nemein_rss_manage_opml']['tmp_name']))  
     216        { 
     217            $opml_file = $_FILES['net_nemein_rss_manage_opml']['tmp_name']; 
    222218 
    223219            // We have OPML file, parse it 
     
    249245        } 
    250246         
     247        $this->_update_breadcrumb_line($handler_id); 
     248         
    251249        return true; 
    252250    } 
     
    258256    } 
    259257     
    260     function _handler_edit($handler_id, $args, &$data) 
    261     { 
    262         $data['feed'] = new net_nemein_rss_feed_dba($args[0]); 
    263         if (!$data['feed']) 
    264         { 
    265             return false; 
    266         } 
    267         $data['feed']->require_do('midgard:update'); 
    268      
     258    function _load_controller(&$data) 
     259    { 
    269260        $data['schemadb'] = midcom_helper_datamanager2_schema::load_database($this->_config->get('schemadb_feed')); 
    270261        $data['controller'] =& midcom_helper_datamanager2_controller::create('simple'); 
     
    276267            // This will exit. 
    277268        } 
     269    } 
     270     
     271    function _handler_edit($handler_id, $args, &$data) 
     272    { 
     273        $data['feed'] = new net_nemein_rss_feed_dba($args[0]); 
     274        if (!$data['feed']) 
     275        { 
     276            return false; 
     277        } 
     278        $data['feed']->require_do('midgard:update'); 
     279     
     280        $this->_load_controller(&$data); 
    278281         
    279282        switch ($data['controller']->process_form()) 
     
    291294        $_MIDCOM->bind_view_to_object($data['feed']); 
    292295         
     296        $this->_update_breadcrumb_line($handler_id); 
     297         
    293298        return true; 
    294299    } 
     
    297302    {         
    298303        midcom_show_style('net-nemein-rss-feed-edit'); 
     304    } 
     305     
     306    /** 
     307     * Displays an downloadpage delete confirmation view. 
     308     * 
     309     * Note, that the downloadpage for non-index mode operation is automatically determined in the can_handle 
     310     * phase. 
     311     * 
     312     * If create privileges apply, we relocate to the index creation downloadpage, 
     313     */ 
     314    function _handler_delete($handler_id, $args, &$data) 
     315    { 
     316        $data['feed'] = new net_nemein_rss_feed_dba($args[0]); 
     317        if (!$data['feed']) 
     318        { 
     319            return false; 
     320        } 
     321        $data['feed']->require_do('midgard:delete'); 
     322 
     323        $this->_load_controller(&$data); 
     324 
     325        if (array_key_exists('net_nemein_rss_deleteok', $_REQUEST)) 
     326        { 
     327            // Deletion confirmed. 
     328             
     329            if (! midcom_helper_purge_object($data['feed'])) 
     330            { 
     331                $_MIDCOM->generate_error(MIDCOM_ERRCRIT, "Failed to delete feed {$args[0]}, last Midgard error was: " . mgd_errstr()); 
     332                // This will exit. 
     333            } 
     334 
     335            // Delete ok, relocating to welcome. 
     336            $_MIDCOM->relocate('feeds/list/'); 
     337            // This will exit. 
     338        } 
     339 
     340        if (array_key_exists('net_nemein_rss_deletecancel', $_REQUEST)) 
     341        { 
     342            // Redirect to view page. 
     343            $_MIDCOM->relocate('feeds/list/'); 
     344            // This will exit() 
     345        } 
     346 
     347        $_MIDCOM->set_26_request_metadata($data['feed']->revised, $data['feed']->guid); 
     348        $this->_view_toolbar->bind_to($data['feed']); 
     349        $_MIDCOM->set_pagetitle("{$this->_topic->extra}: {$data['feed']->title}"); 
     350         
     351        $this->_update_breadcrumb_line($handler_id); 
     352 
     353        return true; 
     354    } 
     355 
     356 
     357    /** 
     358     * Shows the loaded downloadpage. 
     359     */ 
     360    function _show_delete ($handler_id, &$data) 
     361    {    
     362        midcom_show_style('net-nemein-rss-feed-delete'); 
    299363    } 
    300364     
     
    314378        $_MIDCOM->bind_view_to_object($data['feed']); 
    315379         
     380        $this->_update_breadcrumb_line($handler_id); 
     381         
    316382        return true; 
    317383    } 
     
    320386    {         
    321387        midcom_show_style('net-nemein-rss-feed-fetch'); 
     388    } 
     389     
     390    /** 
     391     * Helper, updates the context so that we get a complete breadcrum line towards the current 
     392     * location. 
     393     * 
     394     */ 
     395    function _update_breadcrumb_line($handler_id) 
     396    { 
     397        $tmp = Array(); 
     398         
     399        $tmp[] = Array 
     400        ( 
     401            MIDCOM_NAV_URL => "feeds/list/", 
     402            MIDCOM_NAV_NAME => $_MIDCOM->i18n->get_string('manage feeds', 'net.nemein.rss'), 
     403        ); 
     404 
     405        switch ($handler_id) 
     406        { 
     407            case 'feeds_subscribe': 
     408                $tmp[] = Array 
     409                ( 
     410                    MIDCOM_NAV_URL => "feeds/subscribe/", 
     411                    MIDCOM_NAV_NAME => $_MIDCOM->i18n->get_string('subscribe feeds', 'net.nemein.rss'), 
     412                ); 
     413                break; 
     414            case 'feeds_edit': 
     415                $tmp[] = Array 
     416                ( 
     417                    MIDCOM_NAV_URL => "feeds/edit/{$this->_request_data['feed']->guid}/", 
     418                    MIDCOM_NAV_NAME => $this->_l10n_midcom->get('edit'), 
     419                ); 
     420                break; 
     421            case 'feeds_delete': 
     422                $tmp[] = Array 
     423                ( 
     424                    MIDCOM_NAV_URL => "feeds/delete/{$this->_request_data['feed']->guid}/", 
     425                    MIDCOM_NAV_NAME => $this->_l10n_midcom->get('delete'), 
     426                ); 
     427                break; 
     428            case 'feeds_fetch': 
     429                $tmp[] = Array 
     430                ( 
     431                    MIDCOM_NAV_URL => "feeds/fetch/{$this->_request_data['feed']->guid}/", 
     432                    MIDCOM_NAV_NAME => $_MIDCOM->i18n->get_string('refresh feed', 'net.nemein.rss'), 
     433                ); 
     434                break; 
     435        } 
     436 
     437        $_MIDCOM->set_custom_context_data('midcom.helper.nav.breadcrumb', $tmp); 
    322438    } 
    323439} 
  • trunk/src/net.nemein.rss/style/net-nemein-rss-feed-fetch.php

    r4308 r4452  
    1212else 
    1313{ 
    14     echo "<ul>\n"; 
     14    echo "<table>\n"; 
     15    echo "    <thead>\n"; 
     16    echo "        <tr>\n"; 
     17    echo "            <th>" . $_MIDCOM->i18n->get_string('remote item', 'net.nemein.rss') . "</th>\n"; 
     18    echo "            <th>" . $_MIDCOM->i18n->get_string('local item', 'net.nemein.rss') . "</th>\n"; 
     19    echo "        </tr>\n"; 
     20    echo "    </thead>\n"; 
     21    echo "    <tbody>\n"; 
    1522    foreach ($data['items'] as $item) 
    1623    { 
    17         echo "<li><a href=\"{$item['link']}\">{$item['title']}</a>\n"; 
    18         echo "    <ul>\n"; 
     24        echo "<tr>\n"; 
     25        echo "    <td><a href=\"{$item['link']}\">{$item['title']}</a></td>\n"; 
    1926         
    2027        if (!$item['local_guid']) 
    2128        { 
    22             echo "        <li>" . $_MIDCOM->i18n->get_string('not in local database', 'net.nemein.rss') . "</li>\n"; 
     29            echo "    <td>" . $_MIDCOM->i18n->get_string('not in local database', 'net.nemein.rss') . "</td>\n"; 
    2330        } 
    2431        else 
     
    2633            $local_article = new midcom_db_article($item['local_guid']); 
    2734            $local_link = $_MIDCOM->permalinks->create_permalink($item['local_guid']); 
    28             echo "        <li><a href=\"{$local_link}\">{$local_article->title}</a></li>\n"; 
     35            echo "    <td><a href=\"{$local_link}\">{$local_article->title}</a></td>\n"; 
    2936        } 
    3037         
    31         echo "    </ul>\n"; 
    32         echo "</li>\n"; 
     38        echo "</tr>\n"; 
    3339    } 
    34     echo "</ul>\n"; 
     40    echo "    </tbody>\n"; 
     41    echo "</table>\n"; 
    3542} 
    3643?>