Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #60 on: July 25, 2008, 04:54:05 pm » |
|
You have to comment out just the line 'if (USER_ID){' and the appropriate '}' I changed your posted code to my idea. Try: <?php /************************* Coppermine Photo Gallery ************************ Copyright (c) 2003-2007 Coppermine Dev Team v1.1 originally written by Gregory DEMAR
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. **********************************************/
if (!defined('IN_COPPERMINE')) die('Not in Coppermine...');
if (defined('DISPLAYIMAGE_PHP')) { $thisplugin->add_filter('page_meta','annotate_meta'); $thisplugin->add_filter('file_data','annotate_file_data'); }
$thisplugin->add_action('plugin_install','annotate_install'); $thisplugin->add_action('plugin_uninstall','annotate_uninstall'); $thisplugin->add_action('plugin_cleanup','annotate_cleanup');
function annotate_meta(){
$meta = "\n" . '<script src="plugins/annotate/lib/httpreq.js" type="text/javascript"></script>'; $meta .= "\n" . '<script src="plugins/annotate/lib/photonotes.js" type="text/javascript"></script>'; $meta .= "\n" . '<link rel="stylesheet" href="plugins/annotate/lib/photonotes.css" type="text/css" />'; $meta .= "\n";
return $meta; }
function annotate_file_data($CURRENT_PIC_DATA){
global $CONFIG; if (is_image($CURRENT_PIC_DATA['filename'])){
$sql = "SELECT * FROM {$CONFIG['TABLE_PREFIX']}notes WHERE pid = {$CURRENT_PIC_DATA['pid']}"; $result = cpg_db_query($sql); $notes = array(); while ($row = mysql_fetch_assoc($result)) $notes[] = $row; mysql_free_result($result); $jsarray = arrayToJS4($notes, 'annotations');
$html =& $CURRENT_PIC_DATA['html']; $html = '<div class="Photo fn-container" id="PhotoContainer">' . $html . '</div>'; // if (USER_ID){ $html .= <<< EOT <div style="clear: both; padding-top: 20px"> <form action="" method="post"> <input type="submit" class="button" name="addname" value="Annotate" onclick="return addnote()" /> </form> </div>
EOT;
// }
$user_id = USER_ID; $admin = GALLERY_ADMIN_MODE ? 'true' : 'false'; $html .= <<< EOT <script type="text/javascript">
var $jsarray
/* create the Photo Note Container */ var container = document.getElementById('PhotoContainer');
var notes = new PhotoNoteContainer(container);
for (var n = 0; n < annotations.length; n++){ /* create a note */ var size = new PhotoNoteRect(annotations[n].posx, annotations[n].posy, annotations[n].width, annotations[n].height); var note = new PhotoNote(annotations[n].note,'note' + n, size); /* implement the save/delete functions */ note.onsave = function (note) { return ajax_save(note); }; note.ondelete = function (note) { return ajax_delete(note); }; /* assign the note id number */ note.nid = annotations[n].nid; /* if (!$admin && note.user_id != $user_id) note.editable = false; */ /* add it to the container */ notes.AddNote(note); }
notes.HideAllNotes();
addEvent(container, 'mouseover', function() { notes.ShowAllNotes(); }); addEvent(container, 'mouseout', function() { notes.HideAllNotes(); });
function addnote(){
var newNote = new PhotoNote('','note' + n,new PhotoNoteRect(10,10,50,50)); newNote.onsave = function (note) { return ajax_save(note); }; newNote.ondelete = function (note) { return ajax_delete(note); }; notes.AddNote(newNote); newNote.Select(); newNote.nid = 0; return false; }
function ajax_save(note){
var data = 'add=' + {$CURRENT_PIC_DATA['pid']} + '&nid=' + note.nid + '&posx=' + note.rect.left + '&posy=' + note.rect.top + '&width=' + note.rect.width + '&height=' + note.rect.height + '¬e=' + escape(note.text);
annotate_request(data, note);
return true; }
function ajax_delete(note){
var data = 'remove=' + note.nid;
annotate_request(data, note);
return true; }
</script>
EOT;
}
return $CURRENT_PIC_DATA; }
// Based on code by Rob Williams //Convert a PHP array to a JavaScript one (rev. 4) function arrayToJS4($array, $baseName) {
$return = '';
//Write out the initial array definition $return .= ($baseName . " = new Array(); \r\n ");
//Reset the array loop pointer reset ($array);
//Use list() and each() to loop over each key/value //pair of the array while (list($key, $value) = each($array)) { if (is_numeric($key)) { //A numeric key, so output as usual $outKey = "[" . $key . "]"; } else { //A string key, so output as a string $outKey = "['" . $key . "']"; } if (is_array($value)) { //The value is another array, so simply call //another instance of this function to handle it $return .= arrayToJS4($value, $baseName . $outKey); } else {
//Output the key declaration $return .= ($baseName . $outKey . " = ");
//Now output the value if (is_numeric($value)){ $return .= ($value . "; \r\n "); } else if (is_string($value)) { //Output as a string, as we did before $return .= ("'" . $value . "'; \r\n "); } else if ($value === false) { //Explicitly output false $return .= ("false; \r\n "); } else if ($value === NULL) { //Explicitly output null $return .= ("null; \r\n "); } else if ($value === true) { //Explicitly output true $return .= ("true; \r\n "); } else { //Output the value directly otherwise $return .= ($value . "; \r\n "); } } } return $return; }
function annotate_install() { global $thisplugin, $CONFIG;
$sql = "DROP TABLE IF EXISTS `{$CONFIG['TABLE_PREFIX']}notes`"; cpg_db_query($sql); $sql = <<< EOT CREATE TABLE IF NOT EXISTS `{$CONFIG['TABLE_PREFIX']}notes` ( `nid` smallint(5) unsigned NOT NULL auto_increment, `pid` mediumint(8) unsigned NOT NULL, `posx` smallint(5) unsigned NOT NULL, `posy` smallint(5) unsigned NOT NULL, `width` smallint(5) unsigned NOT NULL, `height` smallint(5) unsigned NOT NULL, `note` text NOT NULL, `user_id` smallint(5) unsigned NOT NULL, PRIMARY KEY (`nid`), KEY `pid` (`pid`) ) TYPE=MyISAM ;
EOT;
return cpg_db_query($sql); }
|
|
|
|
|
Logged
|
|
|
|
LnQ
Coppermine novice

Posts: 31
|
 |
« Reply #61 on: July 25, 2008, 10:42:12 pm » |
|
Thanks it works...
Now I just need some security....could it be posible to add some admin info for abuse... when people tag theirs ip adresse get logged... or some capture code to be verified before someone can tag...
abuse from bots and stuff if they exits...
but thanks for the plugin too it awsome
|
|
|
|
|
Logged
|
|
|
|
Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #62 on: July 26, 2008, 07:27:31 am » |
|
when people tag theirs ip adresse get logged
Just make an 'ALTER TABLE foo ADD bar' in your database and change the sql query, where the annotations are added to the database. some capture code to be verified before someone can tag
You could customize the captcha plugin for this purpose.
|
|
|
|
|
Logged
|
|
|
|
Gephri
Coppermine frequent poster
  
Posts: 235
|
 |
« Reply #63 on: July 26, 2008, 03:53:31 pm » |
|
eenemeenemuu: I see that you are offering help to prevent an abuse using this mod. Can you help me with the following request? how to add the dirty word filter from the language file ($lang_bad_words) to this plug-in?
|
|
|
|
|
Logged
|
|
|
|
Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #64 on: July 26, 2008, 09:03:26 pm » |
|
I don't know how $lang_bad_words is constructed, but i suppose it's an array. You have to insert somewhere something like if (in_array($lang_bad_words)) cpg_die(ERROR, 'Don't use bad words.', __FILE__, __LINE__); or check it via javascript. I'll think about that soon 
|
|
|
|
|
Logged
|
|
|
|
Gephri
Coppermine frequent poster
  
Posts: 235
|
 |
« Reply #65 on: July 27, 2008, 12:22:29 am » |
|
Thanks Here's 2 places where dirty word functions are in place in cpg: db_input.php function check_comment(&$str) { global $CONFIG, $lang_bad_words, $queries;
if ($CONFIG['filter_bad_words']) { $ercp = array(); foreach($lang_bad_words as $word) { $ercp[] = '/' . ($word[0] == '*' ? '': '\b') . str_replace('*', '', $word) . ($word[(strlen($word)-1)] == '*' ? '': '\b') . '/i'; } $str = preg_replace($ercp, '(...)', $str); }
$com_words=explode(' ',strip_tags(bb_decode($str))); $replacements=array(); foreach($com_words as $key => $word) { if (utf_strlen($word) > $CONFIG['max_com_wlength'] ) { $replacements[] = $word; } } $str=str_replace($replacements,'(...)',$str); }
and include/functions.inc /** * filter_content() * * Replace strings that match badwords with tokens indicating it has been filtered. * * @param string or array $str * @return string or array **/ function filter_content($str) { global $lang_bad_words, $CONFIG, $ercp; if ($CONFIG['filter_bad_words']) { static $ercp=array(); if (!count($ercp)) foreach($lang_bad_words as $word) { $ercp[] = '/' . ($word[0] == '*' ? '': '\b') . str_replace('*', '', $word) . ($word[(strlen($word)-1)] == '*' ? '': '\b') . '/i'; } if (is_array($str)) { $new_str=array(); foreach ($str as $key=>$element) { $new_str[$key]=filter_content($element); } $str=$new_str; } else { $stripped_str = strip_tags($str); $str = preg_replace($ercp, '(...)', $stripped_str); } } return $str; }
Beyond that - I'm not sure what to do...
|
|
|
|
|
Logged
|
|
|
|
|
lemm85
Coppermine newbie
Posts: 2
|
 |
« Reply #66 on: September 04, 2008, 08:22:19 pm » |
|
hi anyone,
nobody an idea why firefox and IE7 set different marks like this:
marked with firefox3.0.1: [Edit GauGau] Replaced hotlinked images with attachment [/Edit]
viewed in IE7: [Edit GauGau] Replaced hotlinked images with attachment [/Edit]
could any other approve this problem?
thx
|
|
|
« Last Edit: September 05, 2008, 06:43:45 pm by Joachim Müller »
|
Logged
|
|
|
|
Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #67 on: September 04, 2008, 08:33:30 pm » |
|
could any other approve this problem? No. In my gallery the annotations are at the same place in IE 7 and FF 3.
|
|
|
|
|
Logged
|
|
|
|
|
Joachim Müller
|
 |
« Reply #68 on: September 05, 2008, 06:44:26 pm » |
|
Posting a link instead of just a screenshot might help... 
|
|
|
|
|
Logged
|
|
|
|
Fabricio Ferrero
Dev Team member
   
Gender:
 Argentina
Posts: 1997
From San Juan, Argentina, to the World!
|
 |
« Reply #69 on: September 13, 2008, 08:31:27 pm » |
|
Hi,
Some user of spanish sub forum is using this plugin but he can't put the 'ñ'. He is right. Maybe some of you have modified the code to work under UTF-8 and could share an updated version of the plugin.
|
|
|
|
|
Logged
|
|
|
|
davieb
Coppermine novice

Posts: 48
|
 |
« Reply #70 on: September 22, 2008, 09:01:19 pm » |
|
My users used to like this feature when we ran a flickr gallery so I reckon it would be a good addition to our coppermine one, however I have the same problem that others had early on, and that is the annotate button appears but when it's clicked the screen just refreshes but nothing appears to add a note anywhere. Can someone explain what I've done wrong or what I need to do to resolve this problem please.
|
|
|
|
|
Logged
|
|
|
|
|
chrislam101
Coppermine newbie
Posts: 2
|
 |
« Reply #71 on: October 01, 2008, 03:11:15 pm » |
|
I have one problem on using that, Can it support UT8 or chinese BIG5 ? many thanks !
|
|
|
|
|
Logged
|
|
|
|
|
Joachim Müller
|
 |
« Reply #72 on: October 01, 2008, 04:31:27 pm » |
|
Nibbler already said that he would be updating the plugin with utf-8 support if he got the time: I will update the plugin soon with your css change and I'll try to fix the apostrophe and utf-8 issues too.
So far, he hasn't updated it. You're welcome to look into this if you're ready.
|
|
|
|
|
Logged
|
|
|
|
|
chrislam101
Coppermine newbie
Posts: 2
|
 |
« Reply #73 on: October 02, 2008, 11:35:43 am » |
|
Oh thanks ! and waiting for new update 
|
|
|
|
|
Logged
|
|
|
|
jManuel
Coppermine novice

Gender:
 Spain
Posts: 46
|
 |
« Reply #74 on: October 07, 2008, 08:43:45 pm » |
|
hi, I have one problem on using that, Can it support UT8 or chinese BIG5 ? many thanks !
Try this, view this topic in spanish sub-board: http://forum.coppermine-gallery.net/index.php/topic,55068.0.htmlwaiting for update.
|
|
|
|
|
Logged
|
jManuel - Comunidad de fotografos aficionados
|
|
|
|
jharvie
Coppermine newbie
Posts: 3
|
 |
« Reply #75 on: October 19, 2008, 02:01:51 pm » |
|
absolutely grand! Is there a way to give permissions to use annotate feature only to some user group? I have made a few tests on my gallery and noticed every registered user can annotate any pic, but I would rather prefere giving this privilege only to some groups.
PS. ah, forgot to mention: Thanks!!!
Yeah, Is there any way to make it so that only certain groups can use the annotate feature or even so that only admin can use it? I don't really want any registered user to be able to annotate my pictures.
|
|
|
|
|
Logged
|
|
|
|
Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #76 on: October 19, 2008, 05:48:17 pm » |
|
Yeah, Is there any way to make it so that only certain groups can use the annotate feature or even so that only admin can use it? I don't really want any registered user to be able to annotate my pictures.
In codebase.php, change the line if (USER_ID){ to your needs.
|
|
|
|
|
Logged
|
|
|
|
|
jharvie
Coppermine newbie
Posts: 3
|
 |
« Reply #77 on: October 19, 2008, 08:05:44 pm » |
|
In codebase.php, change the line if (USER_ID){ to your needs. So if I want to allow the "administrators" group or the username "Admin", what would I change this to?
|
|
|
|
|
Logged
|
|
|
|
Αndré
Dev Team member
   
Gender:
 Germany
Posts: 2545
aka eenemeenemuu
|
 |
« Reply #78 on: October 20, 2008, 05:56:07 pm » |
|
So if I want to allow the "administrators" group or the username "Admin", what would I change this to?
Simple way to give only the user "Admin" (with user id "1") access, replace it with: if (USER_ID == "1"){ To give groups access, replace it with: $group = mysql_result(cpg_db_query(" SELECT g.group_name FROM {$CONFIG['TABLE_USERS']} u INNER JOIN {$CONFIG['TABLE_USERGROUPS']} g ON u.user_group = g.group_id WHERE u.user_id = ".USER_ID ),0); if ($group == "Administrators" || $group == "other groups"){
|
|
|
|
|
Logged
|
|
|
|
ksawery
Coppermine novice

Posts: 21
|
 |
« Reply #79 on: October 23, 2008, 12:17:53 pm » |
|
Is in progress a new version with updates?
|
|
|
|
|
Logged
|
|
|
|
|