12 Commits
3.3.0 ... 3.4.3

18 changed files with 484 additions and 368 deletions

View File

@ -90,7 +90,7 @@ class DcaHelper extends \Backend
}
} else {
$this->Database->prepare("UPDATE tl_rateit_items SET active='' WHERE rkey=? and typ=?")
->execute($dc->activeRecord->id, $typ)
->execute($dc->activeRecord->id, $type)
->updatedId;
}

View File

@ -198,7 +198,7 @@ class RateItArticle extends RateItFrontend {
continue;
}
$this->addRatingForImage($arrRating, $arrGallery['id'], $objFile->id, $objFile->path);
$this->addRatingForImage($arrRating, $arrGallery['id'], $objFiles->id, $objFile->path);
}
// Folders
else {

View File

@ -633,13 +633,9 @@ class rateitBackendModule extends \BackendModule
$cntSql = str_replace('%s', $where, $cntSql);
$count = $this->Database->prepare($cntSql)
->execute()
->fetchRow();
$count = $this->Database->query($cntSql)->fetchRow();
$arrRatingItems = $this->Database->prepare($sql)
->execute()
->fetchAllAssoc();
$arrRatingItems = $this->Database->query($sql)->fetchAllAssoc();
$arrReturn = array();
foreach ($arrRatingItems as $rating) {
if ($rating['active'] != '1') $rating['active'] = '0';

View File

@ -115,7 +115,7 @@ class RateItFrontend extends \Hybrid
$this->loadLanguageFile('default');
$stars = $this->percentToStars($rating['rating']);
preg_match('/^.*\[(.+)\|(.+)\].*$/i', $GLOBALS['TL_CONFIG']['rating_description'], $labels);
if (!is_array($labels) || !count($labels) == 2 || !count($labels) == 3) {
if (!is_array($labels) && (!count($labels) == 2 || !count($labels) == 3)) {
$label = ($rating[totalRatings] > 1 || $rating[totalRatings] == 0) || !$rating ? $GLOBALS['TL_LANG']['rateit']['rating_label'][1] : $GLOBALS['TL_LANG']['rateit']['rating_label'][0];
$description = '%current%/%max% %type% (%count% ['.$GLOBALS['TL_LANG']['tl_rateit']['vote'][0].'|'.$GLOBALS['TL_LANG']['tl_rateit']['vote'][1].'])';
} else {

41
composer.json Normal file
View File

@ -0,0 +1,41 @@
{
"name":"cgo-it/rate-it",
"description":"RateIt extension for the Contao Open Source CMS",
"keywords":["contao", "rating", "rateit", "bewertung"],
"type":"contao-module",
"license":"LGPL-3.0+",
"authors":[
{
"name":"cgo IT",
"email":"info@cgo-it.de",
"homepage":"https://cgo-it.de",
"role":"Developer"
}
],
"support": {
"email": "info@cgo-it.de",
"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://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.4.3"
},
"conflict": {
"contao/core": "2.11.*"
},
"extra":{
"contao": {
"sources":{
"":"system/modules/rateit"
}
}
}
}

View File

@ -75,6 +75,9 @@ class tl_content_rateit extends rateit\DcaHelper {
if ($dc->activeRecord->type == "gallery") {
$type = 'galpic';
// Alle vorherigen Bilder erst mal auf inaktiv setzen
$this->Database->prepare("UPDATE tl_rateit_items SET active='' WHERE rkey LIKE ? AND typ=?")->execute($dc->activeRecord->id.'|%', $type);
if (version_compare(VERSION, '3.2', '>=')) {
$objFiles = \FilesModel::findMultipleByUuids(deserialize($dc->activeRecord->multiSRC));
} else {
@ -92,7 +95,7 @@ class tl_content_rateit extends rateit\DcaHelper {
continue;
}
$this->insertOrUpdateRatingItemGallery($dc, $type, $objFile->name, $objFile->id, ($dc->activeRecord->rateit_active ? '1' : ''));
$this->insertOrUpdateRatingItemGallery($dc, $type, $objFile->name, $objFiles->id, ($dc->activeRecord->rateit_active ? '1' : ''));
}
// Folders
else {
@ -131,48 +134,9 @@ class tl_content_rateit extends rateit\DcaHelper {
public function delete(\DC_Table $dc) {
if ($dc->activeRecord->type == "gallery") {
$objFiles = \FilesModel::findMultipleByUuids(deserialize($dc->activeRecord->multiSRC));
// Get all images
while ($objFiles->next()) {
// Single files
if ($objFiles->type == 'file') {
$objFile = new \File($objFiles->path, true);
if (!$objFile->isGdImage) {
continue;
}
$rkey = $dc->activeRecord->id.'_'.$objFile->id;
$this->Database->prepare("DELETE FROM tl_rateit_items WHERE rkey=? and typ=?")
->execute($rkey, 'galpic');
}
// Folders
else {
$objSubfiles = \FilesModel::findByPid($objFiles->uuid);
if ($objSubfiles === null) {
continue;
}
while ($objSubfiles->next()) {
// Skip subfolders
if ($objSubfiles->type == 'folder') {
continue;
}
$objFile = new \File($objSubfiles->path, true);
if (!$objFile->isGdImage) {
continue;
}
$rkey = $dc->activeRecord->id.'_'.$objFile->id;
$this->Database->prepare("DELETE FROM tl_rateit_items WHERE rkey=? and typ=?")
->execute($rkey, 'galpic');
}
}
}
$this->Database->prepare("DELETE FROM tl_rateit_ratings WHERE pid IN (SELECT `id` FROM tl_rateit_items WHERE rkey LIKE ? AND typ=?)")
->execute($dc->activeRecord->id.'|%', 'galpic');
$this->Database->prepare("DELETE FROM tl_rateit_items WHERE rkey LIKE ? AND typ=?")->execute($dc->activeRecord->id.'|%', 'galpic');
return true;
} else {
return $this->deleteRatingKey($dc, 'ce');

View File

@ -65,7 +65,7 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['rateit_types'] = array
'label' => &$GLOBALS['TL_LANG']['tl_module']['rateit_types'],
'exclude' => true,
'inputType' => 'checkboxWizard',
'options' => array('page', 'article', 'ce', 'module', 'news', 'faq', 'galpic'),
'options' => array('page', 'article', 'ce', 'module', 'news', 'faq', 'galpic', 'news4ward'),
'eval' => array('multiple'=>true, 'mandatory'=>true),
'reference' => &$GLOBALS['TL_LANG']['tl_module']['rateit_types'],
'sql' => "varchar(255) NOT NULL default ''"

View File

@ -67,6 +67,7 @@ $GLOBALS['TL_LANG']['tl_rateit_type_options']['faq'] = 'FAQ';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['ce'] = 'Inhaltselement';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['module'] = 'Modul';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['galpic'] = 'Galerie-Bild';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['news4ward'] = 'Beitrag';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['rating desc'] = 'Bewertung';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['title'] = 'Titel';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['typ'] = 'Typ';

View File

@ -38,7 +38,7 @@ $GLOBALS['TL_LANG']['tl_module']['rateit_legend'] = 'Rate It-Einstellungen';
*/
$GLOBALS['TL_LANG']['tl_module']['rateit_title'] = array('Titel der Bewertung', 'Titel der Bewertung (wird im Backend angezeigt).');
$GLOBALS['TL_LANG']['tl_module']['rateit_active'] = array('Aktiv', 'Aktiv bedeutet, dass die Bewertung sichtbar für den Frontend-Nutzer ist.');
$GLOBALS['TL_LANG']['tl_module']['rateit_types'] = array('Seite', 'Artikel', 'Inhaltselement', 'Modul', 'Nachrichten', 'FAQ', 'Galeriebild');
$GLOBALS['TL_LANG']['tl_module']['rateit_types'] = array('Typen', 'Art der Bewertung');
$GLOBALS['TL_LANG']['tl_module']['rateit_count'] = array('Max. Anzahl', 'Max. Anzahl anzuzeigender Einträge.');
$GLOBALS['TL_LANG']['tl_module']['rateit_toptype'] = array('Art der Liste', 'Die x bestbewerteten Einträge oder die x meistbewerteten Einträge.');
$GLOBALS['TL_LANG']['tl_module']['rateit_template'] = array('Template', 'Hier können Sie das Template für die Bewertung des Artikels auswählen.');
@ -50,6 +50,7 @@ $GLOBALS['TL_LANG']['tl_module']['rateit_types']['module'] = 'Modul';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['news'] = 'Nachrichten';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['faq'] = 'FAQ';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['galpic'] = 'Galeriebild';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['news4ward'] = 'Beitrag';
$GLOBALS['TL_LANG']['tl_module']['rateit_toptype']['best'] = 'Beste Bewertungen';
$GLOBALS['TL_LANG']['tl_module']['rateit_toptype']['most'] = 'Meiste Bewertungen';

View File

@ -67,6 +67,7 @@ $GLOBALS['TL_LANG']['tl_rateit_type_options']['faq'] = 'FAQ';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['ce'] = 'Content element';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['module'] = 'Module';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['galpic'] = 'Gallery picture';
$GLOBALS['TL_LANG']['tl_rateit_type_options']['news4ward'] = 'Blog entry';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['rating desc'] = 'Rating';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['title'] = 'Title';
$GLOBALS['TL_LANG']['tl_rateit_order_options']['typ'] = 'Type';

View File

@ -50,6 +50,7 @@ $GLOBALS['TL_LANG']['tl_module']['rateit_types']['module'] = 'Module';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['news'] = 'News';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['faq'] = 'FAQ';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['galpic'] = 'Gallery Picture';
$GLOBALS['TL_LANG']['tl_module']['rateit_types']['news4ward'] = 'Blog entry';
$GLOBALS['TL_LANG']['tl_module']['rateit_toptype']['best'] = 'Best votes';
$GLOBALS['TL_LANG']['tl_module']['rateit_toptype']['most'] = 'Most votes';

View File

@ -90,6 +90,7 @@
.mod_rateit table.rating td.type-faq { background-color:#ffe0aa; }
.mod_rateit table.rating td.type-article { background-color:#ffcce0; }
.mod_rateit table.rating td.type-galpic { background-color:#ffe066; }
.mod_rateit table.rating td.type-news4ward { background-color:#ffe011; }
.mod_rateit table.rating td.active-1, .mod_rateit table.rating td.type-page { background-color:#e0ffe0; }
.mod_rateit table.rating td.

View File

@ -1,7 +1,7 @@
/*!
Colorbox v1.4.31 - 2013-09-25
Colorbox v1.5.8 - 2014-04-15
jQuery lightbox and modal window plugin
(c) 2013 Jack Moore - http://www.jacklmoore.com/colorbox
(c) 2014 Jack Moore - http://www.jacklmoore.com/colorbox
license: http://www.opensource.org/licenses/mit-license.php
*/
(function ($, document, window) {
@ -29,9 +29,6 @@
maxHeight: false,
scalePhotos: true,
scrolling: true,
href: false,
title: false,
rel: false,
opacity: 0.9,
preloading: true,
className: false,
@ -54,7 +51,7 @@
slideshowSpeed: 2500,
slideshowStart: "start slideshow",
slideshowStop: "stop slideshow",
photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp)((#|\?).*)?$/i,
photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,
// alternate image paths for high-res displays
retinaImage: false,
@ -78,8 +75,20 @@
onLoad: false,
onComplete: false,
onCleanup: false,
onClosed: false
onClosed: false,
rel: function() {
return this.rel;
},
href: function() {
// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
return $(this).attr('href');
},
title: function() {
return this.title;
}
},
// Abstracting the HTML and event identifiers for easy rebranding
colorbox = 'colorbox',
@ -120,7 +129,7 @@
$ratingHover,
$ratingDescription,
$groupControls,
$events = $('<a/>'),
$events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2
// Variables for cached values or use across multiple functions
settings,
@ -128,7 +137,6 @@
interfaceWidth,
loadedHeight,
loadedWidth,
element,
index,
photo,
open,
@ -137,7 +145,6 @@
loadingTimer,
publicMethod,
div = "div",
className,
requests = 0,
previousCSS = {},
init;
@ -167,6 +174,38 @@
return window.innerHeight ? window.innerHeight : $(window).height();
}
function Settings(element, options) {
if (options !== Object(options)) {
options = {};
}
this.cache = {};
this.el = element;
this.value = function(key) {
var dataAttr;
if (this.cache[key] === undefined) {
dataAttr = $(this.el).attr('data-cbox-'+key);
if (dataAttr !== undefined) {
this.cache[key] = dataAttr;
} else if (options[key] !== undefined) {
this.cache[key] = options[key];
} else if (defaults[key] !== undefined) {
this.cache[key] = defaults[key];
}
}
return this.cache[key];
};
this.get = function(key) {
var value = this.value(key);
return $.isFunction(value) ? value.call(this.el, this) : value;
};
}
// Determine the next and previous members in a group.
function getIndex(increment) {
var
@ -184,61 +223,54 @@
// Checks an href to see if it is a photo.
// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
function isImage(settings, url) {
return settings.photo || settings.photoRegex.test(url);
return settings.get('photo') || settings.get('photoRegex').test(url);
}
function retinaUrl(settings, url) {
return settings.retinaUrl && window.devicePixelRatio > 1 ? url.replace(settings.photoRegex, settings.retinaSuffix) : url;
return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
}
function trapFocus(e) {
if ('contains' in $box[0] && !$box[0].contains(e.target)) {
if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
e.stopPropagation();
$box.focus();
}
}
// Assigns function results to their respective properties
function makeSettings() {
var i,
data = $.data(element, colorbox);
function setClass(str) {
if (setClass.str !== str) {
$box.add($overlay).removeClass(setClass.str).addClass(str);
setClass.str = str;
}
}
if (data == null) {
settings = $.extend({}, defaults);
if (console && console.log) {
console.log('Error: cboxElement missing settings object');
function getRelated(rel) {
index = 0;
if (rel && rel !== false) {
$related = $('.' + boxElement).filter(function () {
var options = $.data(this, colorbox);
var settings = new Settings(this, options);
return (settings.get('rel') === rel);
});
index = $related.index(settings.el);
// Check direct calls to Colorbox.
if (index === -1) {
$related = $related.add(settings.el);
index = $related.length - 1;
}
} else {
settings = $.extend({}, data);
}
for (i in settings) {
if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
settings[i] = settings[i].call(element);
$related = $(settings.el);
}
}
settings.rel = settings.rel || element.rel || $(element).data('rel') || 'nofollow';
settings.href = settings.href || $(element).attr('href');
settings.title = settings.title || element.title;
if (typeof settings.href === "string") {
settings.href = $.trim(settings.href);
}
}
function trigger(event, callback) {
function trigger(event) {
// for external use
$(document).trigger(event);
// for internal use
$events.trigger(event);
if ($.isFunction(callback)) {
callback.call(element);
$events.triggerHandler(event);
}
}
var slideshow = (function(){
var active,
@ -251,15 +283,15 @@
}
function set() {
if (settings.loop || $related[index + 1]) {
if (settings.get('loop') || $related[index + 1]) {
clear();
timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
}
}
function start() {
$slideshow
.html(settings.slideshowStop)
.html(settings.get('slideshowStop'))
.unbind(click)
.one(click, stop);
@ -278,7 +310,7 @@
.unbind(event_load, clear);
$slideshow
.html(settings.slideshowStart)
.html(settings.get('slideshowStart'))
.unbind(click)
.one(click, function () {
publicMethod.next();
@ -300,15 +332,15 @@
return function(){
if (active) {
if (!settings.slideshow) {
if (!settings.get('slideshow')) {
$events.unbind(event_cleanup, reset);
reset();
}
} else {
if (settings.slideshow && $related[1]) {
if (settings.get('slideshow') && $related[1]) {
active = true;
$events.one(event_cleanup, reset);
if (settings.slideshowAuto) {
if (settings.get('slideshowAuto')) {
start();
} else {
stop();
@ -321,65 +353,26 @@
}());
function launch(target) {
function launch(element) {
var options;
if (!closing) {
element = target;
options = $(element).data('colorbox');
makeSettings();
settings = new Settings(element, options);
$related = $(element);
index = 0;
if (settings.rel !== 'nofollow') {
$related = $('.' + boxElement).filter(function () {
var data = $.data(this, colorbox),
relRelated;
if (data) {
relRelated = $(this).data('rel') || data.rel || this.rel;
}
return (relRelated === settings.rel);
});
index = $related.index(element);
// Check direct calls to Colorbox.
if (index === -1) {
$related = $related.add(element);
index = $related.length - 1;
}
}
$overlay.css({
opacity: parseFloat(settings.opacity),
cursor: settings.overlayClose ? "pointer" : "auto",
visibility: 'visible'
}).show();
if (className) {
$box.add($overlay).removeClass(className);
}
if (settings.className) {
$box.add($overlay).addClass(settings.className);
}
className = settings.className;
if (settings.closeButton) {
$close.html(settings.close).appendTo($content);
} else {
$close.appendTo('<div/>');
}
getRelated(settings.get('rel'));
if (!open) {
open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
// Show colorbox so the sizes can be calculated in older versions of jQuery
$box.css({visibility:'hidden', display:'block'});
setClass(settings.get('className'));
$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden');
// Show colorbox so the sizes can be calculated in older versions of jQuery
$box.css({visibility:'hidden', display:'block', opacity:''});
$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
$content.css({width:'', height:''}).append($loaded);
// Cache values needed for size calculations
@ -389,18 +382,25 @@
loadedWidth = $loaded.outerWidth(true);
// Opens inital empty Colorbox prior to content being loaded.
settings.w = setSize(settings.initialWidth, 'x');
settings.h = setSize(settings.initialHeight, 'y');
var initialWidth = setSize(settings.get('initialWidth'), 'x');
var initialHeight = setSize(settings.get('initialHeight'), 'y');
var maxWidth = settings.get('maxWidth');
var maxHeight = settings.get('maxHeight');
settings.w = (maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth;
settings.h = (maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight;
$loaded.css({width:'', height:settings.h});
publicMethod.position();
trigger(event_open, settings.onOpen);
trigger(event_open);
settings.get('onOpen');
$groupControls.add($title).hide();
$box.focus();
if (settings.trapFocus) {
if (settings.get('trapFocus')) {
// Confine focus to the modal
// Uses event capturing that is not supported in IE8-
if (document.addEventListener) {
@ -414,12 +414,25 @@
}
// Return focus on closing
if (settings.returnFocus) {
if (settings.get('returnFocus')) {
$events.one(event_closed, function () {
$(element).focus();
$(settings.el).focus();
});
}
}
$overlay.css({
opacity: parseFloat(settings.get('opacity')) || '',
cursor: settings.get('overlayClose') ? 'pointer' : '',
visibility: 'visible'
}).show();
if (settings.get('closeButton')) {
$close.html(settings.get('close')).appendTo($content);
} else {
$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
}
load();
}
}
@ -457,7 +470,7 @@
$next = $('<button type="button"/>').attr({id:prefix+'Next'}),
$slideshow = $tag('button', "Slideshow"),
$loadingOverlay
).css({'margin-bottom': '20px'});;
);
$close = $('<button type="button"/>').attr({id:prefix+'Close'});
@ -479,7 +492,7 @@
)
).find('div div').css({'float': 'left'});
$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');
$groupControls = $next.add($prev).add($current).add($slideshow);
@ -513,7 +526,7 @@
publicMethod.close();
});
$overlay.click(function () {
if (settings.overlayClose) {
if (settings.get('overlayClose')) {
publicMethod.close();
}
});
@ -521,11 +534,11 @@
// Key Bindings
$(document).bind('keydown.' + prefix, function (e) {
var key = e.keyCode;
if (open && settings.escKey && key === 27) {
if (open && settings.get('escKey') && key === 27) {
e.preventDefault();
publicMethod.close();
}
if (open && settings.arrowKey && $related[1] && !e.altKey) {
if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
if (key === 37) {
e.preventDefault();
$prev.click();
@ -567,34 +580,44 @@
// ****************
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
var $this = this;
var settings;
var $obj = this;
options = options || {};
if ($.isFunction($obj)) { // assume a call to $.colorbox
$obj = $('<a/>');
options.open = true;
} else if (!$obj[0]) { // colorbox being applied to empty collection
return $obj;
}
if (!$obj[0]) { // colorbox being applied to empty collection
return $obj;
}
appendHTML();
if (addBindings()) {
if ($.isFunction($this)) { // assume a call to $.colorbox
$this = $('<a/>');
options.open = true;
} else if (!$this[0]) { // colorbox being applied to empty collection
return $this;
}
if (callback) {
options.onComplete = callback;
}
$this.each(function () {
$.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
$obj.each(function () {
var old = $.data(this, colorbox) || {};
$.data(this, colorbox, $.extend(old, options));
}).addClass(boxElement);
if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
launch($this[0]);
settings = new Settings($obj[0], options);
if (settings.get('open')) {
launch($obj[0]);
}
}
return $this;
return $obj;
};
publicMethod.position = function (speed, loadedCallback) {
@ -614,7 +637,7 @@
scrollTop = $window.scrollTop();
scrollLeft = $window.scrollLeft();
if (settings.fixed) {
if (settings.get('fixed')) {
offset.top -= scrollTop;
offset.left -= scrollLeft;
$box.css({position: 'fixed'});
@ -625,18 +648,18 @@
}
// keeps the top and left positions within the browser's viewport.
if (settings.right !== false) {
left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
} else if (settings.left !== false) {
left += setSize(settings.left, 'x');
if (settings.get('right') !== false) {
left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
} else if (settings.get('left') !== false) {
left += setSize(settings.get('left'), 'x');
} else {
left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
}
if (settings.bottom !== false) {
top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
} else if (settings.top !== false) {
top += setSize(settings.top, 'y');
if (settings.get('bottom') !== false) {
top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
} else if (settings.get('top') !== false) {
top += setSize(settings.get('top'), 'y');
} else {
top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
}
@ -684,7 +707,7 @@
$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
if (settings.reposition) {
if (settings.get('reposition')) {
setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
$window.bind('resize.' + prefix, publicMethod.position);
}, 1);
@ -734,7 +757,7 @@
$loaded.scrollTop(scrolltop);
}
publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
}
};
@ -743,9 +766,9 @@
return;
}
var callback, speed = settings.transition === "none" ? 0 : settings.speed;
var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');
$loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
$loaded.remove();
$loaded = $tag(div, 'LoadedContent').append(object);
@ -789,7 +812,7 @@
$loaded.hide()
.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
.css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
.prependTo($content);
@ -799,18 +822,18 @@
$(photo).css({'float': 'none'});
setClass(settings.get('className'));
callback = function () {
var total = $related.length,
iframe,
frameBorder = 'frameBorder',
allowTransparency = 'allowTransparency',
complete;
if (!open) {
return;
}
function removeFilter() { // Needed for IE7 & IE8 in versions of jQuery prior to 1.7.2
function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
if ($.support.opacity === false) {
$box[0].style.removeAttribute('filter');
}
@ -819,41 +842,34 @@
complete = function () {
clearTimeout(loadingTimer);
$loadingOverlay.hide();
trigger(event_complete, settings.onComplete);
trigger(event_complete);
settings.get('onComplete');
};
$title.html(settings.title).add($loaded).show();
$title.html(settings.get('title')).show();
$loaded.show();
if (total > 1) { // handle grouping
if (typeof settings.current === "string") {
$current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
if (typeof settings.get('current') === "string") {
$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
}
$next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
$prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
$next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
$prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));
slideshow();
// Preloads images within a rel group
if (settings.preloading) {
if (settings.get('preloading')) {
$.each([getIndex(-1), getIndex(1)], function(){
var src,
img,
var img,
i = $related[this],
data = $.data(i, colorbox);
settings = new Settings(i, $.data(i, colorbox)),
src = settings.get('href');
if (data && data.href) {
src = data.href;
if ($.isFunction(src)) {
src = src.call(i);
}
} else {
src = $(i).attr('href');
}
if (src && isImage(data, src)) {
src = retinaUrl(data, src);
if (src && isImage(settings, src)) {
src = retinaUrl(settings, src);
img = document.createElement('img');
img.src = src;
}
@ -863,29 +879,27 @@
$groupControls.hide();
}
if (settings.iframe) {
iframe = $tag('iframe')[0];
if (settings.get('iframe')) {
iframe = document.createElement('iframe');
if (frameBorder in iframe) {
iframe[frameBorder] = 0;
if ('frameBorder' in iframe) {
iframe.frameBorder = 0;
}
if (allowTransparency in iframe) {
iframe[allowTransparency] = "true";
if ('allowTransparency' in iframe) {
iframe.allowTransparency = "true";
}
if (!settings.scrolling) {
if (!settings.get('scrolling')) {
iframe.scrolling = "no";
}
$(iframe)
.attr({
src: settings.href,
src: settings.get('href'),
name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
'class': prefix + 'Iframe',
allowFullScreen : true, // allow HTML5 video to go fullscreen
webkitAllowFullScreen : true,
mozallowfullscreen : true
allowFullScreen : true // allow HTML5 video to go fullscreen
})
.one('load', complete)
.appendTo($loaded);
@ -894,21 +908,21 @@
iframe.src = "//about:blank";
});
if (settings.fastIframe) {
if (settings.get('fastIframe')) {
$(iframe).trigger('load');
}
} else {
complete();
}
if (settings.transition === 'fade') {
if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 1, removeFilter);
} else {
removeFilter();
}
};
if (settings.transition === 'fade') {
if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 0, function () {
publicMethod.position(0, callback);
});
@ -924,21 +938,17 @@
photo = false;
element = $related[index];
makeSettings();
trigger(event_purge);
trigger(event_load);
settings.get('onLoad');
trigger(event_load, settings.onLoad);
settings.h = settings.get('height') ?
setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');
settings.h = settings.height ?
setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
settings.innerHeight && setSize(settings.innerHeight, 'y');
settings.w = settings.width ?
setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
settings.innerWidth && setSize(settings.innerWidth, 'x');
settings.w = settings.get('width') ?
setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');
// Sets the minimum dimensions for use in image scaling
settings.mw = settings.w;
@ -946,22 +956,22 @@
// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
if (settings.maxWidth) {
settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
if (settings.get('maxWidth')) {
settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
}
if (settings.maxHeight) {
settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
if (settings.get('maxHeight')) {
settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
}
href = settings.href;
href = settings.get('href');
loadingTimer = setTimeout(function () {
$loadingOverlay.show();
}, 100);
if (settings.inline) {
if (settings.get('inline')) {
// Inserts an empty placeholder where inline content is being pulled from.
// An event is bound to put inline content back when Colorbox closes or loads new content.
$inline = $tag(div).hide().insertBefore($(href)[0]);
@ -971,44 +981,46 @@
});
prep($(href));
} else if (settings.iframe) {
} else if (settings.get('iframe')) {
// IFrame element won't be added to the DOM until it is ready to be displayed,
// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
prep(" ");
} else if (settings.html) {
prep(settings.html);
} else if (settings.get('html')) {
prep(settings.get('html'));
} else if (isImage(settings, href)) {
href = retinaUrl(settings, href);
photo = document.createElement('img');
photo = new Image();
$(photo)
.addClass(prefix + 'Photo')
.bind('error',function () {
settings.title = false;
prep($tag(div, 'Error').html(settings.imgError));
prep($tag(div, 'Error').html(settings.get('imgError')));
})
.one('load', function () {
var percent;
if (request !== requests) {
return;
}
// A small pause because some browsers will occassionaly report a
// img.width and img.height of zero immediately after the img.onload fires
setTimeout(function(){
var percent;
$.each(['alt', 'longdesc', 'aria-describedby'], function(i,val){
var attr = $(element).attr(val) || $(element).attr('data-'+val);
var attr = $(settings.el).attr(val) || $(settings.el).attr('data-'+val);
if (attr) {
photo.setAttribute(val, attr);
}
});
if (settings.retinaImage && window.devicePixelRatio > 1) {
if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
photo.height = photo.height / window.devicePixelRatio;
photo.width = photo.width / window.devicePixelRatio;
}
if (settings.scalePhotos) {
if (settings.get('scalePhotos')) {
setResize = function () {
photo.height -= photo.height * percent;
photo.width -= photo.width * percent;
@ -1027,7 +1039,7 @@
photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
}
if ($related[1] && (settings.loop || $related[index + 1])) {
if ($related[1] && (settings.get('loop') || $related[index + 1])) {
photo.style.cursor = 'pointer';
photo.onclick = function () {
publicMethod.next();
@ -1036,19 +1048,16 @@
photo.style.width = photo.width + 'px';
photo.style.height = photo.height + 'px';
setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
prep(photo);
}, 1);
});
setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
photo.src = href;
}, 1);
} else if (href) {
$loadingBay.load(href, settings.data, function (data, status) {
$loadingBay.load(href, settings.get('data'), function (data, status) {
if (request === requests) {
prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
}
});
}
@ -1056,14 +1065,14 @@
// Navigates to the next page/image in a set.
publicMethod.next = function () {
if (!active && $related[1] && (settings.loop || $related[index + 1])) {
if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
index = getIndex(1);
launch($related[index]);
}
};
publicMethod.prev = function () {
if (!active && $related[1] && (settings.loop || index)) {
if (!active && $related[1] && (settings.get('loop') || index)) {
index = getIndex(-1);
launch($related[index]);
}
@ -1074,26 +1083,22 @@
if (open && !closing) {
closing = true;
open = false;
trigger(event_cleanup, settings.onCleanup);
trigger(event_cleanup);
settings.get('onCleanup');
$window.unbind('.' + prefix);
$overlay.fadeTo(settings.get('fadeOut') || 0, 0);
$overlay.fadeTo(settings.fadeOut || 0, 0);
$box.stop().fadeTo(settings.fadeOut || 0, 0, function () {
$box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
$box.hide();
$overlay.hide();
trigger(event_purge);
$loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
$loaded.remove();
setTimeout(function () {
closing = false;
trigger(event_closed, settings.onClosed);
trigger(event_closed);
settings.get('onClosed');
}, 1);
});
}
@ -1119,7 +1124,7 @@
// A method for fetching the current element Colorbox is referencing.
// returns a jQuery object.
publicMethod.element = function () {
return $(element);
return $(settings.el);
};
publicMethod.settings = defaults;

File diff suppressed because one or more lines are too long

View File

@ -212,7 +212,7 @@ function doRateIt() {
getStarPercent: function(id) {
/* Format = anyStringHere-<id>-<float(currentStars)>_(scale);
* Example: RateItRatings-5-3_5 //Primary key id = 5, 3/5 stars. */
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
if (stars != null) {
var score = stars[3].toFloat();
var scale = stars[4].toFloat();
@ -236,17 +236,17 @@ function doRateIt() {
},
getRatableId: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? stars[1] : '';
},
getRatableType: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? stars[2] : '';
},
getRatableMaxValue: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? stars[4].toInt() : 0;
},
@ -312,9 +312,10 @@ function doRateIt() {
el.data('selected', el.find('.rateItRating-selected'));
el.data('hover', el.find('.rateItRating-hover'));
var backgroundImage = self.getBackgroundImage(el.data('wrapper'));
self.options.starwidth = backgroundImage.width;
self.options.starheight = backgroundImage.height / 3; // da immer drei Sterne "übereinander" gebraucht werden
jQuery.when(self.getBackgroundImage(el.data('wrapper'))).done(function(backgroundImageSize) {
self.options.starwidth = backgroundImageSize[0];
self.options.starheight = backgroundImageSize[1] / 3; // da immer drei Sterne "übereinander" gebraucht werden
});
if (self.options.starwidth === undefined || self.options.starwidth < 16) {
self.options.starwidth = 16;
}
@ -451,7 +452,7 @@ function doRateIt() {
getStarPercent: function(id) {
/* Format = anyStringHere-<id>-<float(currentStars)>_(scale);
* Example: RateItRatings-5-3_5 //Primary key id = 5, 3/5 stars. */
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
if (stars != null) {
var score = parseFloat(stars[3]);
var scale = parseFloat(stars[4]);
@ -475,17 +476,17 @@ function doRateIt() {
},
getRatableId: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? stars[1] : '';
},
getRatableType: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? stars[2] : '';
},
getRatableMaxValue: function(id) {
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic)-(\d*\.?\d+)_(\d*\.?\d+)$/);
var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);
return stars != null ? parseInt(stars[4]) : 0;
},
@ -498,13 +499,21 @@ function doRateIt() {
},
getBackgroundImage: function(el) {
var dfd = jQuery.Deferred();
var backgroundImageSize = new Array();
var reg_imgFile = /url\s*\(["']?(.*)["']?\)/i;
var dummy = document.createElement('img');
var string = this.getBackgroundImagePath(el);
string = string.match(reg_imgFile)[1];
string = string.replace('\"', '');
dummy.src = string;
return dummy;
jQuery('<img/>')
.attr('src', string)
.load(function() {
backgroundImageSize.push(this.width);
backgroundImageSize.push(this.height);
dfd.resolve(backgroundImageSize);
});
return dfd.promise();
},
updateText: function(el, text) {

File diff suppressed because one or more lines are too long

View File

@ -98,7 +98,7 @@ class RateIt extends \Frontend {
}
//Make sure that the ratable type is 'page' or 'ce' or 'module'
if (!($type === 'page' || $type === 'article' || $type === 'ce' || $type === 'module' || $type === 'news' || $type === 'faq' || $type === 'galpic')) {
if (!($type === 'page' || $type === 'article' || $type === 'ce' || $type === 'module' || $type === 'news' || $type === 'faq' || $type === 'galpic' || $type === 'news4ward')) {
header(RETURN_AJAX_HEADER);
echo $GLOBALS['TL_LANG']['rateit']['error']['invalid_type'];
exit;
@ -133,8 +133,19 @@ class RateIt extends \Frontend {
->count();
// Die with an error if the insert fails (duplicate IP or duplicate member id for a vote).
if (((!$this->allowDuplicates && $countIp == 0) || $this->allowDuplicates) ||
((!$this->allowDuplicatesForMembers && (isset($countUser) ? $countUser == 0 : false)) || ($this->allowDuplicatesForMembers && isset($userId)))) {
if ((!$this->allowDuplicatesForMembers && (isset($countUser) ? $countUser == 0 : false)) || ($this->allowDuplicatesForMembers && isset($userId))) {
// Insert the data.
$arrSet = array('pid' => $ratableKeyId['id'],
'tstamp' => time(),
'ip_address' => $ip,
'memberid' => isset($userId) ? $userId : null,
'rating' => $rating,
'createdat'=> time()
);
$this->Database->prepare('INSERT INTO tl_rateit_ratings %s')
->set($arrSet)
->execute();
} elseif (!isset($countUser) && ((!$this->allowDuplicates && $countIp == 0) || $this->allowDuplicates)) {
// Insert the data.
$arrSet = array('pid' => $ratableKeyId['id'],
'tstamp' => time(),

View File

@ -66,7 +66,6 @@
</div>
<?php if ($this->rateit_rating_after): ?>
<!-- indexer::stop -->
<div itemtype="http://data-vocabulary.org/Review-aggregate" itemscope="" class="rating-microdata">
<div id="<?php echo $this->id; ?>" class="<?php echo $this->class; ?> <?php echo $this->rateit_class; ?>">
<?php if ($this->showBefore) : ?>
<div id="<?php echo $this->descriptionId; ?>" class="ratingText"><?php echo $this->description; ?></div>
@ -79,12 +78,5 @@
<div id="<?php echo $this->descriptionId; ?>" class="ratingText"><?php echo $this->description; ?></div>
<?php endif; ?>
</div>
<span class="rating-microdata" itemprop="itemreviewed"><?php echo $this->itemreviewed; ?></span>
<span class="rating-microdata" itemtype="http://data-vocabulary.org/Rating" itemscope="" itemprop="rating">
<span itemprop="average"><?php echo $this->actRating; ?></span>
<span itemprop="best"><?php echo $this->maxRating; ?></span>
</span>
<span class="rating-microdata" itemprop="votes"><?php echo $this->votes; ?></span>
</div>
<!-- indexer::continue -->
<?php endif; ?>