From 74f7d6c4109851a83a2310900ac15e29e4254aea Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Wed, 1 Apr 2009 12:00:19 +0000 Subject: The first part of Pedro's tagging code --- languages/en.php | 6 + vendors/jquery.imgareaselect-0.6.2.js | 554 ++++++++++++++++++++++++++++++++++ vendors/jquery.quicksearch.js | 345 +++++++++++++++++++++ views/default/object/image.php | 309 ++++++++++++++++++- views/default/tidypics/css.php | 43 ++- 5 files changed, 1247 insertions(+), 10 deletions(-) create mode 100644 vendors/jquery.imgareaselect-0.6.2.js create mode 100644 vendors/jquery.quicksearch.js diff --git a/languages/en.php b/languages/en.php index 6b2d51374..20c1f3cee 100644 --- a/languages/en.php +++ b/languages/en.php @@ -53,6 +53,12 @@ 'image:none' => "No images have been added yet.", 'image:back' => "Back", 'image:next' => "Next", + + // tagging + 'image:doclickfortag' => 'Click on the faces of people to label them.', + 'image:finish_tagging' => 'Stop labeling', + 'image:tagthisphoto' => 'Tag this photo', + 'image:actiontag' => 'Tag', //widgets diff --git a/vendors/jquery.imgareaselect-0.6.2.js b/vendors/jquery.imgareaselect-0.6.2.js new file mode 100644 index 000000000..76f77ee98 --- /dev/null +++ b/vendors/jquery.imgareaselect-0.6.2.js @@ -0,0 +1,554 @@ +/* + * imgAreaSelect jQuery plugin + * version 0.6.2 + * + * Copyright (c) 2008 Michal Wojciechowski (odyniec.net) + * + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://odyniec.net/projects/imgareaselect/ + * + */ + +jQuery.imgAreaSelect = { onKeyPress: null }; + +jQuery.imgAreaSelect.init = function (img, options) { + var $area = jQuery('
'), + $border1 = jQuery('
'), + $border2 = jQuery('
'), + $outLeft = jQuery('
'), + $outTop = jQuery('
'), + $outRight = jQuery('
'), + $outBottom = jQuery('
'), + left, top, imgOfs, imgWidth, imgHeight, parent, parOfs, parScroll, + adjusted, zIndex = 0, fixed, $p, startX, startY, moveX, moveY, + resizeMargin = 10, resize = [ ], V = 0, H = 1, + keyDown, d, aspectRatio, x1, x2, y1, y2, x, y, + selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 }; + + var $a = $area.add($border1).add($border2); + var $o = $outLeft.add($outTop).add($outRight).add($outBottom); + + function viewX(x) + { + return x + imgOfs.left + parScroll.left - parOfs.left; + } + + function viewY(y) + { + return y + imgOfs.top + parScroll.top - parOfs.top; + } + + function selX(x) + { + return x - imgOfs.left - parScroll.left + parOfs.left; + } + + function selY(y) + { + return y - imgOfs.top - parScroll.top + parOfs.top; + } + + function evX(event) + { + return event.pageX + parScroll.left - parOfs.left; + } + + function evY(event) + { + return event.pageY + parScroll.top - parOfs.top; + } + + function adjust() + { + imgOfs = jQuery(img).offset(); + imgWidth = jQuery(img).width(); + imgHeight = jQuery(img).height(); + + if (jQuery(parent).is('body')) + parOfs = parScroll = { left: 0, top: 0 }; + else { + parOfs = jQuery(parent).offset(); + parScroll = { left: parent.scrollLeft, top: parent.scrollTop }; + } + + left = viewX(0); + top = viewY(0); + } + + function update(resetKeyPress) + { + $a.css({ + left: viewX(selection.x1) + 'px', + top: viewY(selection.y1) + 'px', + width: Math.max(selection.width - options.borderWidth * 2, 0) + 'px', + height: Math.max(selection.height - options.borderWidth * 2, 0) + 'px' + }); + $outLeft.css({ left: left + 'px', top: top + 'px', + width: selection.x1 + 'px', height: imgHeight + 'px' }); + $outTop.css({ left: left + selection.x1 + 'px', top: top + 'px', + width: selection.width + 'px', height: selection.y1 + 'px' }); + $outRight.css({ left: left + selection.x2 + 'px', top: top + 'px', + width: imgWidth - selection.x2 + 'px', height: imgHeight + 'px' }); + $outBottom.css({ left: left + selection.x1 + 'px', top: top + selection.y2 + 'px', + width: selection.width + 'px', height: imgHeight - selection.y2 + 'px' }); + + if (resetKeyPress !== false) { + if (jQuery.imgAreaSelect.keyPress != docKeyPress) + jQuery(document).unbind(jQuery.imgAreaSelect.keyPress, + jQuery.imgAreaSelect.onKeyPress); + + if (options.keys) + jQuery(document).bind(jQuery.imgAreaSelect.keyPress, + jQuery.imgAreaSelect.onKeyPress = docKeyPress); + } + } + + function areaMouseMove(event) + { + if (!adjusted) { + adjust(); + adjusted = true; + + $a.one('mouseout', function () { adjusted = false; }); + } + + x = selX(evX(event)) - selection.x1; + y = selY(evY(event)) - selection.y1; + + resize = [ ]; + + if (options.resizable) { + if (y <= resizeMargin) + resize[V] = 'n'; + else if (y >= selection.height - resizeMargin) + resize[V] = 's'; + if (x <= resizeMargin) + resize[H] = 'w'; + else if (x >= selection.width - resizeMargin) + resize[H] = 'e'; + } + + $border2.css('cursor', resize.length ? resize.join('') + '-resize' : + options.movable ? 'move' : ''); + } + + function areaMouseDown(event) + { + if (event.which != 1) return false; + + adjust(); + + if (options.resizable && resize.length > 0) { + jQuery('body').css('cursor', resize.join('') + '-resize'); + + x1 = viewX(resize[H] == 'w' ? selection.x2 : selection.x1); + y1 = viewY(resize[V] == 'n' ? selection.y2 : selection.y1); + + jQuery(document).mousemove(selectingMouseMove); + $border2.unbind('mousemove', areaMouseMove); + + jQuery(document).one('mouseup', function () { + resize = [ ]; + + jQuery('body').css('cursor', ''); + + if (options.autoHide) + $a.add($o).hide(); + + options.onSelectEnd(img, selection); + + jQuery(document).unbind('mousemove', selectingMouseMove); + $border2.mousemove(areaMouseMove); + }); + } + else if (options.movable) { + moveX = selection.x1 + left; + moveY = selection.y1 + top; + startX = evX(event); + startY = evY(event); + + jQuery(document).mousemove(movingMouseMove) + .one('mouseup', function () { + options.onSelectEnd(img, selection); + + jQuery(document).unbind('mousemove', movingMouseMove); + }); + } + else + jQuery(img).mousedown(event); + + return false; + } + + function aspectRatioXY() + { + x2 = Math.max(left, Math.min(left + imgWidth, + x1 + Math.abs(y2 - y1) * aspectRatio * (x2 >= x1 ? 1 : -1))); + y2 = Math.round(Math.max(top, Math.min(top + imgHeight, + y1 + Math.abs(x2 - x1) / aspectRatio * (y2 >= y1 ? 1 : -1)))); + x2 = Math.round(x2); + } + + function aspectRatioYX() + { + y2 = Math.max(top, Math.min(top + imgHeight, + y1 + Math.abs(x2 - x1) / aspectRatio * (y2 >= y1 ? 1 : -1))); + x2 = Math.round(Math.max(left, Math.min(left + imgWidth, + x1 + Math.abs(y2 - y1) * aspectRatio * (x2 >= x1 ? 1 : -1)))); + y2 = Math.round(y2); + } + + function doResize(newX2, newY2) + { + x2 = newX2; + y2 = newY2; + + if (options.minWidth && Math.abs(x2 - x1) < options.minWidth) { + x2 = x1 - options.minWidth * (x2 < x1 ? 1 : -1); + + if (x2 < left) + x1 = left + options.minWidth; + else if (x2 > left + imgWidth) + x1 = left + imgWidth - options.minWidth; + } + + if (options.minHeight && Math.abs(y2 - y1) < options.minHeight) { + y2 = y1 - options.minHeight * (y2 < y1 ? 1 : -1); + + if (y2 < top) + y1 = top + options.minHeight; + else if (y2 > top + imgHeight) + y1 = top + imgHeight - options.minHeight; + } + + x2 = Math.max(left, Math.min(x2, left + imgWidth)); + y2 = Math.max(top, Math.min(y2, top + imgHeight)); + + if (aspectRatio) + if (Math.abs(x2 - x1) / aspectRatio > Math.abs(y2 - y1)) + aspectRatioYX(); + else + aspectRatioXY(); + + if (options.maxWidth && Math.abs(x2 - x1) > options.maxWidth) { + x2 = x1 - options.maxWidth * (x2 < x1 ? 1 : -1); + if (aspectRatio) aspectRatioYX(); + } + + if (options.maxHeight && Math.abs(y2 - y1) > options.maxHeight) { + y2 = y1 - options.maxHeight * (y2 < y1 ? 1 : -1); + if (aspectRatio) aspectRatioXY(); + } + + selection.x1 = selX(Math.min(x1, x2)); + selection.x2 = selX(Math.max(x1, x2)); + selection.y1 = selY(Math.min(y1, y2)); + selection.y2 = selY(Math.max(y1, y2)); + selection.width = Math.abs(x2 - x1); + selection.height = Math.abs(y2 - y1); + + update(); + + options.onSelectChange(img, selection); + } + + function selectingMouseMove(event) + { + x2 = !resize.length || resize[H] || aspectRatio ? evX(event) : viewX(selection.x2); + y2 = !resize.length || resize[V] || aspectRatio ? evY(event) : viewY(selection.y2); + + doResize(x2, y2); + + return false; + } + + function doMove(newX1, newY1) + { + x2 = (x1 = newX1) + selection.width; + y2 = (y1 = newY1) + selection.height; + + selection.x1 = selX(x1); + selection.y1 = selY(y1); + selection.x2 = selX(x2); + selection.y2 = selY(y2); + + update(); + + options.onSelectChange(img, selection); + } + + function movingMouseMove(event) + { + var newX1 = Math.max(left, Math.min(moveX + evX(event) - startX, + left + imgWidth - selection.width)); + var newY1 = Math.max(top, Math.min(moveY + evY(event) - startY, + top + imgHeight - selection.height)); + + doMove(newX1, newY1); + + event.preventDefault(); + return false; + } + + function startSelection(event) + { + sizePredef = 70; + + adjust(); + + selection.x1 = selX(startX = x1 = x2 = evX(event)) - parseInt(sizePredef/2); + selection.y1 = selY(startY = y1 = y2 = evY(event)) - parseInt(sizePredef/2); + + selection.x2 = selection.x1 + sizePredef; + selection.y2 = selection.y1 + sizePredef; + + selection.width = 70; + selection.height = 70; + + console.log(selection); + + resize = [ ]; + + update(); + $a.add($o).show(); + + jQuery(document).unbind('mouseup', cancelSelection) + .mousemove(selectingMouseMove); + $border2.unbind('mousemove', areaMouseMove); + + options.onSelectStart(img, selection); + + jQuery(document).one('mouseup', function () { + if (options.autoHide || (selection.width * selection.height == 0)) + $a.add($o).hide(); + + options.onSelectEnd(img, selection); + + jQuery(document).unbind('mousemove', selectingMouseMove); + $border2.mousemove(areaMouseMove); + }); + } + + function cancelSelection() + { + //Ocultamos cualquier menu + jQuery('#cont-menu').hide(); + jQuery(document).unbind('mousemove', startSelection); + $a.add($o).hide(); + + selection.x1 = selection.y1 = selection.x2 = selection.y2 = + selection.width = selection.height = 0; + + options.onSelectChange(img, selection); + options.onSelectEnd(img, selection); + } + + function imgMouseDown(event) + { + if (event.which != 1) return false; + + jQuery(document).one('mousemove', startSelection) + .one('mouseup', cancelSelection); + + jQuery(document).trigger('mousemove',event); + + return false; + } + + function windowResize() + { + adjust(); + update(false); + x1 = viewX(selection.x1); + y1 = viewY(selection.y1); + x2 = viewX(selection.x2); + y2 = viewY(selection.y2); + } + + var docKeyPress = function(event) { + var k = options.keys, d = 10, t, + key = event.keyCode || event.which; + + if (!isNaN(k.arrows)) d = k.arrows; + if (!isNaN(k.shift) && event.shiftKey) d = k.shift; + if (!isNaN(k.ctrl) && event.ctrlKey) d = k.ctrl; + if (!isNaN(k.alt) && (event.altKey || event.originalEvent.altKey)) d = k.alt; + + if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) || + (k.ctrl == 'resize' && event.ctrlKey) || + (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey))) + { + switch (key) { + case 37: + d = -d; + case 39: + t = Math.max(x1, x2); + x1 = Math.min(x1, x2); + x2 = Math.max(t + d, x1); + if (aspectRatio) aspectRatioYX(); + break; + case 38: + d = -d; + case 40: + t = Math.max(y1, y2); + y1 = Math.min(y1, y2); + y2 = Math.max(t + d, y1); + if (aspectRatio) aspectRatioXY(); + break; + default: + return; + } + + doResize(x2, y2); + } + else { + x1 = Math.min(x1, x2); + y1 = Math.min(y1, y2); + + switch (key) { + case 37: + doMove(Math.max(x1 - d, left), y1); + break; + case 38: + doMove(x1, Math.max(y1 - d, top)); + break; + case 39: + doMove(x1 + Math.min(d, imgWidth - selX(x2)), y1); + break; + case 40: + doMove(x1, y1 + Math.min(d, imgHeight - selY(y2))); + break; + default: + return; + } + } + + return false; + }; + + this.setOptions = function(newOptions) + { + options = jQuery.extend(options, newOptions); + + if (newOptions.x1 != null) { + selection.x1 = newOptions.x1; + selection.y1 = newOptions.y1; + selection.x2 = newOptions.x2; + selection.y2 = newOptions.y2; + newOptions.show = true; + } + + if (newOptions.keys) + options.keys = jQuery.extend({ shift: 1, ctrl: 'resize' }, + newOptions.keys === true ? { } : newOptions.keys); + + parent = jQuery(options.parent).get(0); + + adjust(); + + $p = jQuery(img); + + while ($p.length && !$p.is('body')) { + if (!isNaN($p.css('z-index')) && $p.css('z-index') > zIndex) + zIndex = $p.css('z-index'); + if ($p.css('position') == 'fixed') fixed = true; + + $p = $p.parent(); + } + + x1 = viewX(selection.x1); + y1 = viewY(selection.y1); + x2 = viewX(selection.x2); + y2 = viewY(selection.y2); + selection.width = x2 - x1; + selection.height = y2 - y1; + + update(); + + if (newOptions.hide) + $a.add($o).hide(); + else if (newOptions.show) + $a.add($o).show(); + + $o.addClass(options.classPrefix + '-outer'); + $area.addClass(options.classPrefix + '-selection'); + $border1.addClass(options.classPrefix + '-border1'); + $border2.addClass(options.classPrefix + '-border2'); + + $a.css({ borderWidth: options.borderWidth + 'px' }); + $area.css({ backgroundColor: options.selectionColor, opacity: options.selectionOpacity }); + $border1.css({ borderStyle: 'solid', borderColor: options.borderColor1 }); + $border2.css({ borderStyle: 'dashed', borderColor: options.borderColor2 }); + $o.css({ opacity: options.outerOpacity, backgroundColor: options.outerColor }); + + aspectRatio = options.aspectRatio && (d = options.aspectRatio.split(/:/)) ? + d[0] / d[1] : null; + + if (options.disable || options.enable === false) { + $a.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown); + jQuery(img).add($o).unbind('mousedown', imgMouseDown); + jQuery(window).unbind('resize', windowResize); + } + else if (options.enable || options.disable === false) { + if (options.resizable || options.movable) + $a.mousemove(areaMouseMove).mousedown(areaMouseDown); + + if (!options.persistent) + jQuery(img).add($o).mousedown(imgMouseDown); + jQuery(window).resize(windowResize); + } + + jQuery(options.parent).append($o.add($a)); + + options.enable = options.disable = undefined; + }; + + if (jQuery.browser.msie) + jQuery(img).attr('unselectable', 'on'); + + jQuery.imgAreaSelect.keyPress = jQuery.browser.msie || + jQuery.browser.safari ? 'keydown' : 'keypress'; + + $a.add($o).css({ display: 'none', position: fixed ? 'fixed' : 'absolute', + overflow: 'hidden', zIndex: zIndex > 0 ? zIndex : '0' }); + $area.css({ borderStyle: 'solid' }); + + initOptions = { + borderColor1: '#000', + borderColor2: '#fff', + borderWidth: 1, + classPrefix: 'imgareaselect', + movable: true, + resizable: true, + selectionColor: '#fff', + selectionOpacity: 0.2, + outerColor: '#000', + outerOpacity: 0.2, + parent: 'body', + onSelectStart: function () {}, + onSelectChange: function () {}, + onSelectEnd: function () {} + }; + + options = jQuery.extend(initOptions, options); + this.setOptions(options); +}; + +jQuery.fn.imgAreaSelect = function (options) { + options = options || {}; + + this.each(function () { + if (jQuery(this).data('imgAreaSelect')) + jQuery(this).data('imgAreaSelect').setOptions(options); + else { + if (options.enable === undefined && options.disable === undefined) + options.enable = true; + + jQuery(this).data('imgAreaSelect', new jQuery.imgAreaSelect.init(this, options)); + } + }); + + return this; +}; diff --git a/vendors/jquery.quicksearch.js b/vendors/jquery.quicksearch.js new file mode 100644 index 000000000..d572514e7 --- /dev/null +++ b/vendors/jquery.quicksearch.js @@ -0,0 +1,345 @@ +jQuery(function ($) { + $.fn.quicksearch = function (opt) { + + function is_empty(i) + { + return (i === null || i === undefined || i === false) ? true: false; + } + + function strip_html(input) + { + var regexp = new RegExp(/\<[^\<]+\>/g); + var output = input.replace(regexp, ""); + output = $.trim(output.toLowerCase().replace(/\n/, '').replace(/\s{2,}/, ' ')); + return output; + } + + function get_key() + { + var input = strip_html($('input[rel="' + options.randomElement + '"]').val()); + + if (input.indexOf(' ') === -1) + { + return input; + } + else + { + return input.split(" "); + } + } + + function test_key(k, value, type) + { + if (type === "string") + { + return test_key_string(k, value); + } + else + { + return test_key_arr(k, value); + } + } + + function test_key_string(k, value) + { + return (value.indexOf(k) > -1); + } + + function test_key_arr(k, value) + { + for (var i = 0; i < k.length; i++) { + var test = value.indexOf(k[i]); + if (test === -1) { + return false; + } + } + return true; + } + + function select_element(el) + { + if (options.hideElement === "grandparent") + { + return $(el).parent().parent(); + } + else if (options.hideElement === "parent") + { + return $(el).parent(); + } + else + { + return $(el); + } + } + + function stripe(el) + { + if (doStripe) + { + var i = 0; + select_element(el).filter(':visible').each(function () { + + for (var j = 0; j < stripeRowLength; j++) + { + if (i === j) + { + $(this).addClass(options.stripeRowClass[i]); + + } + else + { + $(this).removeClass(options.stripeRowClass[j]); + } + } + i = (i + 1) % stripeRowLength; + }); + } + } + + function fix_widths(el) + { + $(el).find('td').each(function () { + $(this).attr('width', parseInt($(this).css('width'))); + }); + } + + function loader(o) { + if (options.loaderId) + { + var l = $('input[rel="' + options.randomElement + '"]').parent().find('.loader'); + if (o === 'hide') + { + l.hide(); + } + else + { + l.show(); + } + } + } + + function place_form() { + var formPosition = options.position; + var formAttached = options.attached; + + if (formPosition === 'before') { + $(formAttached).before(make_form()); + } else if (formPosition === 'prepend') { + $(formAttached).prepend(make_form()); + } else if (formPosition === 'append') { + $(formAttached).append(make_form()); + } else { + $(formAttached).after(make_form()); + } + } + + function make_form_label() + { + if (!is_empty(options.labelText)) { + return ' '; + } + return ''; + } + + function make_form_input() + { + var val = (!is_empty(options.inputText)) ? options.inputText : "" + return ' '; + } + + function make_form_loader() + { + if (!is_empty(options.loaderImg)) { + return 'Loading'; + } else { + return '' + options.loaderText + ''; + } + } + + function make_form() + { + var f = (!options.isFieldset) ? 'form' : 'fieldset'; + /*return '<' + f + ' action="#" ' + 'id="'+ options.formId + '" ' + 'class="quicksearch">' + + make_form_label() + make_form_input() + make_form_loader() + + '';*/ + return make_form_label() + make_form_input() + make_form_loader() + } + + function focus_on_load() + { + $('input[rel="' + options.randomElement + '"]').get(0).focus(); + } + + function toggle_text() { + $('input[rel="' + options.randomElement + '"]').focus(function () { + if ($(this).val() === options.inputText) { + $(this).val(''); + } + }); + $('input[rel="' + options.randomElement + '"]').blur(function () { + if ($(this).val() === "") { + $(this).val(options.inputText); + } + }); + } + + function get_cache(el) + { + return $(el).map(function(){ + return strip_html(this.innerHTML); + }); + } + + function init() + { + place_form(); + if (options.fixWidths) fix_widths(el); + if (options.focusOnLoad) focus_on_load(); + if (options.inputText != "" && options.inputText != null) toggle_text(); + + cache = get_cache(el); + + stripe(el); + loader('hide'); + } + + function qs() + { + clearTimeout(timeout); + timeout = setTimeout(function () { + + loader('show'); + + setTimeout(function () { + options.onBefore(); + + var k = get_key(); + var k_type = (typeof k); + var i = 0; + + k = options.filter(k); + + if (k != "") + { + if (typeof score[k] === "undefined") + { + score[k] = new Array(); + cache.each(function (i) { + if (test_key(k, cache[i], k_type)) + { + score[k][i] = true; + } + }); + } + + if (score[k].length === 0) + { + select_element(el).hide(); + } + else + { + /*console.log(score[k].length); + if(score[k].length==1) + { + //$(el).parents('ul').find('li:visible:eq(0) a').addClass('selected'); + } + else + { + //$(el).parents('ul').find('li:visible:eq(0) a').removeClass('selected') + }*/ + + $(el).each(function (i) { + if (score[k][i]) + { + select_element(this).show(); + } + else + { + select_element(this).hide(); + } + } + ); + + if($(el).parents('ul').find('li:visible').length==1) + $(el).parents('ul').find('li:visible:eq(0) a').addClass('selected'); + else + $(el).parents('ul').find('li:visible:eq(0) a').removeClass('selected'); + + } + } + else + { + select_element(el).show(); + } + + stripe(el); + }, options.delay/2); + + setTimeout( function () { + loader('hide'); + }, options.delay/2); + + options.onAfter(); + + }, options.delay/2); + } + + var options = $.extend({ + position: 'prepend', + attached: 'body', + formId: 'quicksearch', + labelText: 'Quick Search', + labelClass: 'qs_label', + inputText: null, + inputClass: 'qs_input', + loaderId: 'loader', + loaderClass: 'loader', + loaderImg: null, + loaderText: 'Loading...', + stripeRowClass: null, + hideElement: null, + delay: 500, + focusOnLoad: false, + onBefore: function () { }, + onAfter: function () { }, + filter: function (i) { + return i; + }, + randomElement: 'qs' + Math.floor(Math.random() * 1000000), + isFieldset: false, + fixWidths: false + }, opt); + + var timeout; + var score = {}; + var stripeRowLength = (!is_empty(options.stripeRowClass)) ? options.stripeRowClass.length : 0; + var doStripe = (stripeRowLength > 0) ? true : false; + var el = this; + var cache; + var selector = $(this).selector; + + $.fn.extend({ + reset_cache: function () { + el = $(selector); + cache = get_cache(el); + } + }); + + init(); + + $('input[rel="' + options.randomElement + '"]').keydown(function (e) { + var keycode = e.keyCode; + if (!(keycode === 9 || keycode === 13 || keycode === 16 || keycode === 17 || keycode === 18 || keycode === 38 || keycode === 40 || keycode === 224)) + { + qs(); + } + }); + + //$('#quicksearch').submit( function () { addTag()}); + + return this; + }; +}); \ No newline at end of file diff --git a/views/default/object/image.php b/views/default/object/image.php index 3aa9bab8e..e4401a950 100644 --- a/views/default/object/image.php +++ b/views/default/object/image.php @@ -81,16 +81,147 @@ echo '
' . autop($desc) . '
'; echo '
'; echo '
' . $back . $next . '
'; - if ($next) echo ''; - echo '' . $title . ''; - if ($next) echo ''; - echo '
'; ?> -
-

-
+
+ + + + + + + +
+
+ +getGUID(), false, 'user', '', 0); -
+?> +
+
+"; + $content .= ""; + + $content .= " +
+ +
"; + + echo elgg_view('input/form', array('internalid' => 'quicksearch', 'internalname' => 'form-phototagging', 'class' => 'quicksearch', 'action' => "{$vars['url']}action/tidypics/phototagging", 'body' => $content)) +?> +
+value); + + + if($data_tag->type == 'user') + $data_tag->data = get_entity($data_tag->value); + else + $data_tag->data = $data_tag->value; + + echo "
"; + if($data_tag->type == 'user') + echo "{$data_tag->data->name}"; + else + echo "{$data_tag->data}"; + echo ""; + echo "
"; +}else +{ + echo "
"; +} + + if ($next) + $click = "onclick='toggleLink()'"; + + echo '' . $title . ''; + +?> +
+ +
+ +
+ +
+ + +
+

+ +
+ + + +
@@ -107,4 +238,164 @@ } } // end of tidypics image display -?> \ No newline at end of file +?> + + + + \ No newline at end of file diff --git a/views/default/tidypics/css.php b/views/default/tidypics/css.php index 6559ec5be..0f5b8baeb 100644 --- a/views/default/tidypics/css.php +++ b/views/default/tidypics/css.php @@ -23,6 +23,18 @@ margin-bottom:10px; margin:10px; } +#tidypics_controls ul { +list-style:none; +margin:0px; +padding:8px; +} + +#tidypics_controls ul li { +padding:2px 10px 2px 22px; +margin:2px 0px; +display:inline; +} +/* .tidypics_download a { font:12px/100% Arial, Helvetica, sans-serif; font-weight:bold; @@ -43,7 +55,7 @@ background:#0054a7; color:white; text-decoration:none; } - +*/ .tidypics_album_images { float:left; width:153px; @@ -147,4 +159,33 @@ padding:0 0 5px; } .river_object_album_comment { background: url(_graphics/river_icons/river_icon_comment.gif) no-repeat left -1px; +} + +/* ----------- tagging ---------------- */ +#tagging_instructions { +background:#FFFBE2 none repeat scroll 0 0; +border:1px solid #FFE222; +margin:10px; +padding:10px; +display:none; +} + +#cont-image { +margin:0px auto; +background:white none repeat scroll 0 0; +border:1px solid #DDDDDD; +padding:10px; +overflow:hidden; +} + +#cont-menu { +border:1px solid #3B5999; +width:200px; +position:absolute; +z-index:10000; +display:none; +background:#fff; +padding:5px; +font-size:12px; +text-align:left; } \ No newline at end of file -- cgit v1.2.3