From fb9540fe2eaa454acf84ca6190fafb17178f42fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carsten=20G=C3=B6tzinger?= Date: Fri, 31 Mar 2017 10:41:53 +0200 Subject: [PATCH] =?UTF-8?q?Verlinkung=20f=C3=BCr=20Top-Modul=20eingebaut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/RateItTopRatingsModule.php | 101 ++++++++++++++++++++++++- composer.json | 7 +- public/css/rateit.css | 9 +++ public/css/rateit.min.css | 2 +- templates/mod_rateit_top_ratings.html5 | 26 ++++--- templates/mod_rateit_top_ratings.xhtml | 16 ++-- 6 files changed, 142 insertions(+), 19 deletions(-) diff --git a/classes/RateItTopRatingsModule.php b/classes/RateItTopRatingsModule.php index 59304fe..e8e619b 100644 --- a/classes/RateItTopRatingsModule.php +++ b/classes/RateItTopRatingsModule.php @@ -35,7 +35,7 @@ namespace cgoIT\rateit; */ class RateItTopRatingsModule extends RateItFrontend { - //protected $intStars = 5; + private static $arrUrlCache = array(); /** * Initialize the controller @@ -123,6 +123,8 @@ class RateItTopRatingsModule extends RateItFrontend $return->rateit_class = 'rateItRating'; + $return->url = $this->getUrl($result); + // Beschriftung ermitteln $rating = array(); $rating['totalRatings'] = $result['most']; @@ -137,6 +139,103 @@ class RateItTopRatingsModule extends RateItFrontend $this->Template->arrRatings = $objReturn; } + + private function getUrl($rating) { + if ($rating['typ'] === 'page') { + return \PageModel::findById($rating['rkey'])->getAbsoluteUrl(); + } + if ($rating['typ'] === 'article') { + $objArticle = \ArticleModel::findPublishedById($rating['rkey']); + if (!is_null($objArticle)) { + return \PageModel::findById($objArticle->pid)->getAbsoluteUrl().'#'.$objArticle->alias; + } + } + if ($rating['typ'] === 'news') { + $objNews = \NewsModel::findById($rating['rkey']); + $objArticle = \NewsModel::findPublishedByPid($objNews->pid); + + // Internal link + if ($objArticle->source != 'external') { + return $this->generateNewsUrl($objNews); + } + + // Encode e-mail addresses + if (substr($objArticle->url, 0, 7) == 'mailto:') { + $strArticleUrl = \StringUtil::encodeEmail($objArticle->url); + } + + // Ampersand URIs + else { + $strArticleUrl = ampersand($objArticle->url); + } + + /** @var \PageModel $objPage */ + global $objPage; + + // External link + return $strArticleUrl; + } + return false; + } + + private function generateNewsUrl($objItem) { + $strCacheKey = 'id_' . $objItem->id; + + // Load the URL from cache + if (isset(self::$arrUrlCache[$strCacheKey])) { + return self::$arrUrlCache[$strCacheKey]; + } + + // Initialize the cache + self::$arrUrlCache[$strCacheKey] = null; + + switch ($objItem->source) { + // Link to an external page + case 'external' : + if (substr($objItem->url, 0, 7) == 'mailto:') { + self::$arrUrlCache[$strCacheKey] = \StringUtil::encodeEmail($objItem->url); + } else { + self::$arrUrlCache[$strCacheKey] = ampersand($objItem->url); + } + break; + + // Link to an internal page + case 'internal' : + if (($objTarget = $objItem->getRelated('jumpTo')) !== null) { + /** @var \PageModel $objTarget */ + self::$arrUrlCache[$strCacheKey] = ampersand($objTarget->getFrontendUrl()); + } + break; + + // Link to an article + case 'article' : + if (($objArticle = \ArticleModel::findByPk($objItem->articleId, array( + 'eager' => true + ))) !== null && ($objPid = $objArticle->getRelated('pid')) !== null) { + /** @var \PageModel $objPid */ + self::$arrUrlCache[$strCacheKey] = ampersand($objPid->getFrontendUrl('/articles/' . ((! \Config::get('disableAlias') && $objArticle->alias != '') ? $objArticle->alias : $objArticle->id))); + } + break; + } + + // Link to the default page + if (self::$arrUrlCache[$strCacheKey] === null) { + $objPage = \PageModel::findWithDetails($objItem->getRelated('pid')->jumpTo); + + if ($objPage === null) { + self::$arrUrlCache[$strCacheKey] = ampersand(\Environment::get('request'), true); + } else { + self::$arrUrlCache[$strCacheKey] = ampersand($objPage->getFrontendUrl(((\Config::get('useAutoItem') && ! \Config::get('disableAlias')) ? '/' : '/items/') . ((! \Config::get('disableAlias') && $objItem->alias != '') ? $objItem->alias : $objItem->id))); + } + + // Add the current archive parameter (news archive) + if ($blnAddArchive && \Input::get('month') != '') { + self::$arrUrlCache[$strCacheKey] .= (\Config::get('disableAlias') ? '&' : '?') . 'month=' . \Input::get('month'); + } + } + + return self::$arrUrlCache[$strCacheKey]; + } } ?> \ No newline at end of file diff --git a/composer.json b/composer.json index 0b7b778..f3f2b31 100644 --- a/composer.json +++ b/composer.json @@ -14,18 +14,19 @@ ], "support": { "email": "info@cgo-it.de", - "issues": "https://git.cgo-it.de/contao/rate-it/issues", + "issues": "https://bitbucket.org/cgo-it/contao-rate-it/issues?status=new&status=open", "forum": "https://community.contao.org/de/showthread.php?38471-Rate-It", - "source": "https://git.cgo-it.de/contao/rate-it/tree/master" + "source": "https://bitbucket.org/cgo-it/contao-rate-it/src" }, "require":{ "php":">=5.3", "contao/core":">=3.0", "contao-community-alliance/composer-plugin": "~2.0", + "leounglaub/contao-simple-ajax":"3.2.x-dev", "cgo-it/xls_export":"3.0.0" }, "replace": { - "cgo-it/rate-it": "<3.5.4" + "cgo-it/rate-it": "<3.4.3" }, "conflict": { "contao/core": "2.11.*" diff --git a/public/css/rateit.css b/public/css/rateit.css index 29d22a6..844ae08 100644 --- a/public/css/rateit.css +++ b/public/css/rateit.css @@ -15,6 +15,15 @@ height: 16px; } +.ce_rateit_top_ratings .rateItContainer { + display: inline-block; + width: 100%; +} + +.ce_rateit_top_ratings .rateItTitle { + float: left; +} + .rateItRating[rel="not-rateable"] { float: right; } diff --git a/public/css/rateit.min.css b/public/css/rateit.min.css index dc340ea..225d6af 100644 --- a/public/css/rateit.min.css +++ b/public/css/rateit.min.css @@ -1 +1 @@ -.rateItRating{position:relative;display:inline-block}.mbrateItRating{position:relative;opacity:1}.mbrateItRating .wrapper,.rateItRating .wrapper{cursor:pointer;position:relative;diplay:inline-block;height:16px}.rateItRating[rel=not-rateable]{float:right}.rateItRating[rel=not-rateable] .wrapper{cursor:default}div.mod_rateit_top_ratings ul{padding:0}div.mod_rateit_top_ratings li{list-style-type:none}div.mod_rateit_top_ratings div.rateItTitle{display:inline-block;max-width:40%;min-height:30px}div.mbrateItRating div.rateItRating-hover,div.mbrateItRating div.rateItRating-selected,div.rateItRating div.rateItRating-hover,div.rateItRating div.rateItRating-selected{position:absolute}.rateItRating .ratingText{color:#000}.mbrateItRating .mbratingText{display:inline-block;color:#ccc}.ratingText.ratingError{color:red}.mbrateItRating .mbratingText.loading,.rateItRating .ratingText.loading{background:url("../images/ajax-loading.gif") no-repeat}span.rating-microdata{display:none} \ No newline at end of file +.rateItRating{position:relative;display:inline-block}.mbrateItRating{position:relative;opacity:1}.mbrateItRating .wrapper,.rateItRating .wrapper{cursor:pointer;position:relative;diplay:inline-block;height:16px}.ce_rateit_top_ratings .rateItContainer{display:inline-block;width:100%;}.ce_rateit_top_ratings .rateItTitle{float: left;}.rateItRating[rel=not-rateable]{float:right}.rateItRating[rel=not-rateable] .wrapper{cursor:default}div.mod_rateit_top_ratings ul{padding:0}div.mod_rateit_top_ratings li{list-style-type:none}div.mod_rateit_top_ratings div.rateItTitle{display:inline-block;max-width:40%;min-height:30px}div.mbrateItRating div.rateItRating-hover,div.mbrateItRating div.rateItRating-selected,div.rateItRating div.rateItRating-hover,div.rateItRating div.rateItRating-selected{position:absolute}.rateItRating .ratingText{color:#000}.mbrateItRating .mbratingText{display:inline-block;color:#ccc}.ratingText.ratingError{color:red}.mbrateItRating .mbratingText.loading,.rateItRating .ratingText.loading{background:url("../images/ajax-loading.gif") no-repeat}span.rating-microdata{display:none} \ No newline at end of file diff --git a/templates/mod_rateit_top_ratings.html5 b/templates/mod_rateit_top_ratings.html5 index 9c7d83c..b004390 100644 --- a/templates/mod_rateit_top_ratings.html5 +++ b/templates/mod_rateit_top_ratings.html5 @@ -1,21 +1,29 @@ -
cssID; ?>style): ?> style="style; ?>"> +
cssID ?>style): ?> style="style ?>"> headline): ?> - <hl; ?>>headline; ?>hl; ?>> + <hl ?>>headline ?>hl ?>>
    arrRatings as $rating): ?>
  • -
    title; ?>
    -
    -
    -
    -
    -
    -
    description; ?>
    +
    +
    + url): ?> + title ?> + + title ?> + +
    +
    +
    +
    +
    +
    +
    description ?>
    +
  • diff --git a/templates/mod_rateit_top_ratings.xhtml b/templates/mod_rateit_top_ratings.xhtml index 9c7d83c..35b7f8c 100644 --- a/templates/mod_rateit_top_ratings.xhtml +++ b/templates/mod_rateit_top_ratings.xhtml @@ -1,21 +1,27 @@ -
    cssID; ?>style): ?> style="style; ?>"> +
    cssID; ?>style): ?> style="style; ?>"> headline): ?> - <hl; ?>>headline; ?>hl; ?>> + <hl ?>>headline; ?>hl; ?>>
      arrRatings as $rating): ?>
    • -
      title; ?>
      -
      +
      + url): ?> + title ?> + + title ?> + +
      +
      -
      description; ?>
      +
      description ?>