コード例 #1
0
 function init()
 {
     // news title
     $oContentField = new AnwContentFieldPage_string(self::FIELD_TITLE);
     $oContentField->indexAs(self::PUB_TITLE);
     $this->addContentField($oContentField);
     // news intro
     $oContentField = new AnwContentFieldPage_xhtml(self::FIELD_INTRO);
     $this->addContentField($oContentField);
     // news body
     $oContentField = new AnwContentFieldPage_xhtml(self::FIELD_BODY);
     $oContentField->setDynamicParsingAllowed(true);
     $oContentField->setDynamicPhpAllowed(true);
     $this->addContentField($oContentField);
     // news date
     $oContentField = new AnwContentFieldPage_date(self::FIELD_DATE);
     $oContentField->setTranslatable(false);
     $oContentField->indexAs(self::PUB_DATE);
     $this->addContentField($oContentField);
     // news categories
     $oFetchingContentClass = AnwContentClasses::getContentClass(self::NEWSCATEGORY_CLASS);
     $oContentField = new AnwContentFieldPage_pageGroup(self::FIELD_CATEGORIES, $oFetchingContentClass);
     $oContentField->setTranslatable(false);
     $oContentMultiplicity = new AnwContentMultiplicity_multiple();
     $oContentField->setMultiplicity($oContentMultiplicity);
     $oContentField->indexAs(self::PUB_CATEGORIES);
     $this->addContentField($oContentField);
 }
コード例 #2
0
 static function getContentClasses()
 {
     if (!self::$bAllContentClassesLoaded) {
         self::loadContentClasses();
         self::$bAllContentClassesLoaded = true;
     }
     return self::$osContentClasses;
 }
コード例 #3
0
ファイル: class_anwiki.php プロジェクト: MenZil-Team/anwiki
 static function tag_anwloop($sMatch, $sContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters)
 {
     AnwDebug::startBench("anwloop", true);
     $oContentClass = AnwContentClasses::getContentClass($sContentClass);
     $aoPages = AnwStorage::fetchPagesByClass(array($sMatch), $oContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters);
     AnwDebug::stopBench("anwloop");
     return $aoPages;
 }
コード例 #4
0
 protected static function getNewsList($oPage)
 {
     //fetch news linked to this category
     $asPatterns = array();
     $oContentClass = AnwContentClasses::getContentClass(self::NEWS_CLASS);
     $asLangs = array($oPage->getLang());
     $nLimit = 0;
     $sSortUser = AnwContentClassPageDefault_news::PUB_DATE;
     $sOrder = AnwUtils::SORTORDER_ASC;
     $asFilters = array();
     $asFilters[] = array('FIELD' => AnwContentClassPageDefault_news::PUB_CATEGORIES, 'OPERATOR' => AnwUtils::FILTER_OP_EQUALS, 'VALUE' => $oPage->getPageGroup()->getId());
     $aoNewsPages = AnwStorage::fetchPagesByClass($asPatterns, $oContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters);
     return $aoNewsPages;
 }
コード例 #5
0
 protected function initializeAdditional()
 {
     $sInitLog = "";
     //-----------------------------
     // create default home page
     //-----------------------------
     $oContentClass = AnwContentClasses::getContentClass('page');
     $sPageName = AnwComponent::globalCfgHomePage();
     $sPageLang = AnwComponent::globalCfgLangDefault();
     $sChangeComment = "Installation assistant";
     $oContent = new AnwContentPage($oContentClass);
     $sHomeTitle = $this->t_("local_homepage_title", array(), $sPageLang);
     $sHomeHead = $this->tpl()->homePageHead($sPageLang);
     $sHomeBody = $this->tpl()->homePageBody($sPageLang, ANWIKI_WEBSITE);
     $oContent->setContentFieldValues(AnwIContentClassPageDefault_page::FIELD_TITLE, array($sHomeTitle));
     $oContent->setContentFieldValues(AnwIContentClassPageDefault_page::FIELD_HEAD, array($sHomeHead));
     $oContent->setContentFieldValues(AnwIContentClassPageDefault_page::FIELD_BODY, array($sHomeBody));
     $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sPageLang, $sChangeComment, $oContent);
     $sInitLog .= $this->t_("initlog_pagecreated", array('pagename' => $sPageName)) . '<br/>';
     //-----------------------------
     // create default menu
     //-----------------------------
     $oContentClass = AnwContentClasses::getContentClass('menu');
     $sPageName = 'en/_include/menu';
     //TODO
     $sPageLang = Anwi18n::langExists('en') ? 'en' : AnwComponent::globalCfgLangDefault();
     //TODO
     $sChangeComment = "Installation assistant";
     $oContent = new AnwContentPage($oContentClass);
     //menu title
     $sMenuTitle = $this->t_("local_menu_title", array(), $sPageLang);
     $oContent->setContentFieldValues(AnwIContentClassPageDefault_menu::FIELD_TITLE, array($sMenuTitle));
     //items
     $oContentFieldItems = $oContentClass->getContentField(AnwIContentClassPageDefault_menu::FIELD_ITEMS);
     $oSubContentItem = new AnwContentPage($oContentFieldItems);
     //main link
     $oContentFieldMainLink = $oContentFieldItems->getContentField(AnwIContentFieldPage_menu_menuItem::FIELD_MAINLINK);
     $oSubContentMainLink = new AnwContentPage($oContentFieldMainLink);
     $sMainLinkTitle = $this->t_("local_menu_mainlink_title", array(), $sPageLang);
     $oSubContentMainLink->setContentFieldValues(AnwIPage_link::FIELD_TITLE, array($sMainLinkTitle));
     $oSubContentMainLink->setContentFieldValues(AnwIPage_link::FIELD_URL, array(AnwComponent::globalCfgHomePage()));
     $oSubContentMainLink->setContentFieldValues(AnwIPage_link::FIELD_TARGET, array(AnwIPage_link::TARGET_SELF));
     $oSubContentItem->setSubContents(AnwIContentFieldPage_menu_menuItem::FIELD_MAINLINK, array($oSubContentMainLink));
     $oContent->setSubContents(AnwIContentClassPageDefault_menu::FIELD_ITEMS, array($oSubContentItem));
     $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sPageLang, $sChangeComment, $oContent);
     $sInitLog .= $this->t_("initlog_pagecreated", array('pagename' => $sPageName)) . '<br/>';
     return $sInitLog;
 }
コード例 #6
0
ファイル: action_create.php プロジェクト: MenZil-Team/anwiki
 private function createPageProcess($sLang, $sContentClass)
 {
     $sPageName = $this->getPageName();
     if (!AnwCurrentSession::isActionAllowed($sPageName, 'create', $sLang)) {
         throw new AnwAclException("permission create denied");
     }
     $oContentClass = AnwContentClasses::getContentClass($sContentClass);
     AnwStorage::transactionStart();
     try {
         //create page
         $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sLang);
         //should we create translations for this new page?
         $asAvailableLangs = $oPage->getPageGroup()->getAvailableLangs();
         //check permissions : translate
         foreach ($asAvailableLangs as $sLang) {
             if (AnwEnv::_POST($this->getChkName($sLang))) {
                 $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), "");
                 if (!AnwCurrentSession::isActionAllowed($sTranslationName, 'translate', $sLang)) {
                     throw new AnwAclException("permission translate denied");
                 }
             }
         }
         foreach ($asAvailableLangs as $sLang) {
             if (AnwEnv::_POST($this->getChkName($sLang))) {
                 $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), "");
                 //create translation
                 $oPageTranslation = $oPage->createNewTranslation($sTranslationName, $sLang);
             }
         }
         AnwStorage::transactionCommit();
     } catch (AnwException $e) {
         AnwStorage::transactionRollback();
         throw $e;
     }
     AnwUtils::redirect(AnwUtils::link($oPage, "edit"));
 }
コード例 #7
0
 function getContentClass()
 {
     $oContentClass = AnwContentClasses::getContentClass($this->getContentClassName());
     return $oContentClass;
 }
コード例 #8
0
ファイル: action_import.php プロジェクト: MenZil-Team/anwiki
 /**
  * Import selected files.
  *
  */
 private function doImport($sUploadedFile, $asSelectedPages, $bContinueOnErrors)
 {
     // we will display the import result after running the whole import
     // that's why we save the output in a temporary buffer during this process
     $sOutBuffer = "";
     //load XML from file
     $aaData = $this->getDataFromXmlFile(self::tmpFilename($sUploadedFile));
     //delete tmp file
     AnwUtils::unlink(self::tmpFilename($sUploadedFile), ANWPATH_TMP);
     $nCountImportErrors = 0;
     $nCountImportSuccess = 0;
     $bMustRollback = false;
     // only when $bContinueOnErrors = false
     // MAIN TRANSACTION - only when $bContinueOnErrors = false
     if ($bContinueOnErrors) {
         // won't revert whole import if errors
         $bMainTransaction = false;
         // will commit immediately each imported content
         $bSubTransaction = true;
     } else {
         // will revert whole import if errors
         $bMainTransaction = true;
         // won't commit immediately each imported content
         $bSubTransaction = false;
     }
     if ($bMainTransaction) {
         AnwStorage::transactionStart();
     }
     try {
         foreach ($aaData['PAGEGROUPS'] as $aaDataGroup) {
             $sOutBuffer .= $this->tpl()->rowGroupOpen();
             $oFirstPage = null;
             $oContentClass = AnwContentClasses::getContentClass($aaDataGroup['CONTENTCLASS']);
             foreach ($aaDataGroup['PAGES'] as $aaDataPage) {
                 $asNotices = array();
                 $sOriginalPageName = $aaDataPage['NAME'];
                 $sPageName = AnwEnv::_POST($this->getInputPageName($sOriginalPageName));
                 $sPageLang = AnwEnv::_POST($this->getInputPageLang($sOriginalPageName));
                 if (!$sPageName || !$sPageLang) {
                     throw new AnwUnexpectedException("PageName or PageLang not found for imported content: " . $sOriginalPageName);
                 }
                 $sPageContent = $aaDataPage['CONTENT'];
                 //do we want to import this page?
                 if (in_array($sOriginalPageName, $asSelectedPages) && $sPageName && $sPageLang) {
                     //check pagename and content
                     $asNotices = $this->checkPermissions($sPageName, $sPageLang, $sPageContent);
                     if (count($asNotices) == 0) {
                         // SUB TRANSACTION - only when $bContinueOnErrors = true
                         if ($bSubTransaction) {
                             AnwStorage::transactionStart();
                         }
                         try {
                             // create the new page
                             $oContent = $oContentClass->rebuildContentFromXml($sPageContent);
                             if (!$oFirstPage) {
                                 $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sPageLang, "", $oContent);
                             } else {
                                 $oPage = $oFirstPage->createNewTranslation($sPageName, $sPageLang, "", $oContent);
                             }
                             if ($bSubTransaction) {
                                 AnwStorage::transactionCommit();
                             }
                             // wait for everything to be completed before affecting $oFirstPage, in case of it fails
                             if (!$oFirstPage) {
                                 $oFirstPage = $oPage;
                             }
                         } catch (AnwException $e) {
                             // special errors management, see FS#62
                             $asNotices[] = $this->t_("notice_unknown") . " (" . $e->getMessage() . ")";
                             //print $e->getFile().'!'.$e->getLine();print_r($e->getTrace());
                             if ($bMainTransaction) {
                                 // we will have to rollback, but we still continue to get the whole report
                                 $bMustRollback = true;
                             }
                             if ($bSubTransaction) {
                                 AnwStorage::transactionRollback();
                             }
                             AnwDebug::reportError($e);
                         }
                     }
                     // import result
                     if (count($asNotices) == 0) {
                         $nCountImportSuccess++;
                         // at least we got a success!
                         $sOutBuffer .= $this->tpl()->rowTranslationProcess_success($oPage->link());
                     } else {
                         $nCountImportErrors++;
                         $sOutBuffer .= $this->tpl()->rowTranslationProcess_failed($sPageName, $sPageLang, $asNotices);
                     }
                 } else {
                     $sOutBuffer .= $this->tpl()->rowTranslationProcess_skipped($sPageName, $sPageLang);
                 }
             }
             $sOutBuffer .= $this->tpl()->rowGroupClose();
         }
         if ($bMainTransaction) {
             if (!$bMustRollback) {
                 AnwStorage::transactionCommit();
             } else {
                 AnwStorage::transactionRollback();
             }
         }
     } catch (AnwException $e) {
         AnwStorage::transactionRollback();
         throw $e;
     }
     // output, with import results before the detailled report
     $this->out .= $this->tpl()->beginProcess();
     if ($nCountImportErrors > 0) {
         if ($nCountImportSuccess > 0) {
             if ($bContinueOnErrors) {
                 $this->out .= $this->tpl()->importResultErrorsContinued($nCountImportSuccess, $nCountImportErrors);
             } else {
                 $this->out .= $this->tpl()->importResultErrorsCancelled($nCountImportSuccess, $nCountImportErrors);
             }
         } else {
             $this->out .= $this->tpl()->importResultFailed($nCountImportErrors);
         }
     } else {
         $this->out .= $this->tpl()->importResultSuccess($nCountImportSuccess);
     }
     $this->out .= $this->tpl()->importDetails($sOutBuffer);
 }
コード例 #9
0
ファイル: anwiki.inc.php プロジェクト: MenZil-Team/anwiki
function anwiki__autoload($sClassName)
{
    static $asClasses;
    if (!$asClasses) {
        $asClasses = array();
        $asClasses['AnwMysql'] = ANWPATH_CLASSES_ABSTRACTION . "class_mysql.php";
        $asClasses['AnwOutput'] = ANWPATH_CLASSES . "class_output.php";
        $asClasses['AnwOutputHtml'] = ANWPATH_CLASSES . "class_output.php";
        $asClasses['AnwParser'] = ANWPATH_CLASSES . "class_parser.php";
        $asClasses['AnwAutoSync'] = ANWPATH_CLASSES . "diff/class_autosync.php";
        $asClasses['AnwXml'] = ANWPATH_CLASSES . "class_xml.php";
        $asClasses['AnwDiffAdded'] = ANWPATH_CLASSES . "diff/class_diffadded.php";
        $asClasses['AnwDiffDeleted'] = ANWPATH_CLASSES . "diff/class_diffdeleted.php";
        $asClasses['AnwDiffEdited'] = ANWPATH_CLASSES . "diff/class_diffedited.php";
        $asClasses['AnwDiffKept'] = ANWPATH_CLASSES . "diff/class_diffkept.php";
        $asClasses['AnwDiffMoved'] = ANWPATH_CLASSES . "diff/class_diffmoved.php";
        $asClasses['AnwDiff'] = ANWPATH_CLASSES . "diff/class_diffs.php";
        $asClasses['AnwDiffs'] = ANWPATH_CLASSES . "diff/class_diffs.php";
        $asClasses['AnwFeed'] = ANWPATH_CLASSES . "class_feed.php";
        $asClasses['AnwFeedItem'] = ANWPATH_CLASSES . "class_feed.php";
        $asClasses['AnwActionGlobal'] = ANWPATH_CLASSES . "class_actionglobal.php";
        $asClasses['AnwActionPage'] = ANWPATH_CLASSES . "class_actionpage.php";
        $asClasses['AnwActionMinimal'] = ANWPATH_CLASSES . "class_actionminimal.php";
        $asClasses['AnwChange'] = ANWPATH_CLASSES . "class_change.php";
        $asClasses['AnwLock'] = ANWPATH_CLASSES . "class_lock.php";
        $asClasses['AnWiki'] = ANWPATH_CLASSES . "class_anwiki.php";
        $asClasses['AnwDependancy'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwDependancyConflict'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwDependancyRequirement'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwGoogleMap'] = ANWPATH_CLASSES . "external/google/maps/class_googlemap.php";
    }
    if (class_exists('AnwDebug')) {
        AnwDebug::log("***AUTOLOAD***: " . $sClassName);
    }
    /*if ($sClassName == "AnwContentClasses") {
    		try{
    			throw new Exception();
    		}
    		catch(Exception $e){
    		print_r($e->getTrace());
    		}
    	}*/
    if (isset($asClasses[$sClassName])) {
        loadApp($asClasses[$sClassName]);
    } else {
        //interface of contentclass
        $sPattern = '!AnwIContentFieldPage_([^_]*?)_(.*?)$!i';
        //ie: AnwIContentFieldPage_menu_menuSubItem belongs to "menu"
        if (preg_match($sPattern, $sClassName, $asMatches)) {
            $sContentClassName = $asMatches[1];
            //AnwContentClasses::loadContentClassInterface($sContentClassName);
            AnwUtils::loadContentClassInterfaceFaster($sContentClassName);
        } else {
            $sPattern = '!AnwIContentClassPageDefault_(.*?)$!i';
            //ie: AnwIContentClassPageDefault_menu belongs to "menu"
            if (preg_match($sPattern, $sClassName, $asMatches)) {
                $sContentClassName = $asMatches[1];
                //AnwContentClasses::loadContentClassInterface($sContentClassName);
                AnwUtils::loadContentClassInterfaceFaster($sContentClassName);
            } else {
                //contentclass: default
                $sPattern = '!AnwContentClassPageDefault_(.*)$!i';
                if (preg_match($sPattern, $sClassName, $asMatches)) {
                    $sContentClassName = $asMatches[1];
                    AnwContentClasses::loadContentClass($sContentClassName);
                } else {
                    //contentclass: override
                    $sPattern = '!AnwContentClassPageOverride_(.*)$!i';
                    if (preg_match($sPattern, $sClassName, $asMatches)) {
                        $sContentClassName = $asMatches[1];
                        AnwContentClasses::loadContentClass($sContentClassName);
                    } else {
                        $sPattern = '!AnwDatatype(.*)$!i';
                        if (preg_match($sPattern, $sClassName)) {
                            loadApp(ANWPATH_CLASSES . "class_datatype.php");
                        } else {
                            //__autoload is called for {AnwContentField, AnwContentMultiplicity...} althought we don't really need it
                            $sPattern = '!(AnwStructuredContentFieldsContainer|AnwContent|AnwContentPage|AnwSettingsContent|AnwContentClasses|AnwStructuredContent(.*)|AnwContentSettings)$!i';
                            if (preg_match($sPattern, $sClassName)) {
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentclasses.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_content.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentmultiplicity.php");
                            } else {
                                if (preg_match('!(AnwStructuredContentFieldsContainerPage|AnwContentClassPage)$!i', $sClassName)) {
                                    loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass_page.php");
                                } else {
                                    if (preg_match('!(AnwStructuredContentFieldsContainerSettings|AnwContentClassSettings)$!i', $sClassName)) {
                                        loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass_settings.php");
                                    } else {
                                        if (preg_match('!(AnwContentFieldPage(.*)|AnwContentFieldPage_(.*))$!i', $sClassName)) {
                                            loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_page.php");
                                        } else {
                                            if (preg_match('!(AnwContentFieldSettings(.*))$!i', $sClassName)) {
                                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_settings.php");
                                            } else {
                                                if (preg_match('!(AnwISettings_(.*))$!i', $sClassName)) {
                                                    loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_settings_interface.php");
                                                } else {
                                                    if (preg_match('!(AnwIPage_(.*))$!i', $sClassName)) {
                                                        loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_page_interface.php");
                                                    } else {
                                                        if (class_exists('AnwDebug')) {
                                                            AnwDebug::log('***AUTOLOAD*** failed');
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
コード例 #10
0
ファイル: global.tpl.php プロジェクト: voodoo81-81/anwiki
    function filterClass($asAllClasses, $asDisplayClasses = array())
    {
        $HTML = <<<EOF

\t<div class="anwfilter" id="filter_classes">
\t<fieldset>
\t\t<legend>{$this->g_('filter_classes')}
\t\t\t<a href="#" onclick="AnwUtils.chkall('chkfilterclass',\$('filter_classes')); return false;">{$this->g_('in_chkall')}</a> 
\t\t\t<a href="#" onclick="AnwUtils.chknone('chkfilterclass',\$('filter_classes')); return false;">{$this->g_('in_chknone')}</a>
\t\t</legend>
EOF;
        foreach ($asAllClasses as $sClass) {
            $bSelected = in_array($sClass, $asDisplayClasses) || count($asDisplayClasses) == 0;
            $sSelected = $bSelected ? ' checked="checked"' : '';
            $sClassName = AnwContentClasses::getContentClass($sClass)->getLabel();
            $sInputName = "cc_" . $sClass;
            $HTML .= <<<EOF

\t\t<input type="checkbox" id="{$this->xQuote($sInputName)}" class="chkfilterclass" name="{$this->xQuote($sInputName)}"{$sSelected}/><label for="{$this->xQuote($sInputName)}">{$this->xText($sClassName)}</label> 
EOF;
        }
        $HTML .= <<<EOF

\t</fieldset>
\t</div>
EOF;
        return $HTML;
    }
コード例 #11
0
 function toHtml($oContent, $oPage)
 {
     $aoContentClasses = array();
     $asContentClassNames = $oContent->getContentFieldValues(self::FIELD_CONTENTCLASS);
     foreach ($asContentClassNames as $sContentClassName) {
         $oContentClass = AnwContentClasses::getContentClass($sContentClassName);
         $aoContentClasses[] = $oContentClass;
     }
     unset($asContentClassNames);
     //get feed items
     $aoMatchingPages = AnwStorage::fetchPages($oContent->getContentFieldValues(self::FIELD_MATCH, true), $aoContentClasses, array($oPage->getLang()), $oContent->getContentFieldValue(self::FIELD_LIMIT), AnwUtils::SORT_BY_TIME, AnwUtils::SORTORDER_DESC);
     $aoFeedItems = array();
     foreach ($aoMatchingPages as $oMatchingPage) {
         $oFeedItem = $oMatchingPage->toFeedItem();
         $aoFeedItems[] = $oFeedItem;
     }
     if (AnwEnv::_GET(self::GET_FEED) != AnwFeed::TYPE_RSS2) {
         $sUrlRss = AnwUtils::link($oPage, "view", array(self::GET_FEED => AnwFeed::TYPE_RSS2));
         //show feed info
         $oOutputHtml = new AnwOutputHtml($oPage);
         $oOutputHtml->setTitle($oContent->getContentFieldValue(self::FIELD_TITLE));
         $sHtmlItems = "";
         foreach ($aoFeedItems as $oFeedItem) {
             $sHtmlItems .= $this->tpl()->feedItem($oFeedItem->getTitle(), $oFeedItem->getLink());
         }
         $sHtmlBody = $this->tpl()->feedInfo($oContent->getContentFieldValue(self::FIELD_TITLE), $oContent->getContentFieldValue(self::FIELD_DESCRIPTION), $sUrlRss, $sHtmlItems, $oPage->getLang());
         $oOutputHtml->setBody($sHtmlBody);
         // load contentclass CSS
         $sHtmlHead = $this->getCssSrcComponent(self::CSS_FILE);
         $sHtmlHead .= $this->tpl()->headRss($sUrlRss, $oContent->getContentFieldValue(self::FIELD_TITLE));
         $oOutputHtml->setHead($sHtmlHead);
     } else {
         $sUrlRss = AnwUtils::linkAbsolute($oPage, "view", array(self::GET_FEED => AnwFeed::TYPE_RSS2));
         //export to rss
         $oFeed = new AnwFeed(AnwFeed::TYPE_RSS2, $oContent->getContentFieldValue(self::FIELD_TITLE), $sUrlRss, $oContent->getContentFieldValue(self::FIELD_DESCRIPTION));
         foreach ($aoFeedItems as $oFeedItem) {
             $oFeed->addItem($oFeedItem);
         }
         $oFeed->output();
     }
     return $oOutputHtml;
 }