diff --git a/docs/upgrades/upgrade_6.1.1-6.2.0.sql b/docs/upgrades/upgrade_6.1.1-6.2.0.sql index 16f64d33d..b1751acad 100644 --- a/docs/upgrades/upgrade_6.1.1-6.2.0.sql +++ b/docs/upgrades/upgrade_6.1.1-6.2.0.sql @@ -1,6 +1,6 @@ insert into webguiVersion values ('6.2.0','upgrade',unix_timestamp()); -DROP TABLE IF EXISTS metaData_fields; -CREATE TABLE metaData_fields ( +DROP TABLE IF EXISTS metaData_properties; +CREATE TABLE metaData_properties ( fieldId int(11) NOT NULL default '0', fieldName varchar(100) NOT NULL , description mediumtext NOT NULL , @@ -11,8 +11,8 @@ CREATE TABLE metaData_fields ( UNIQUE KEY field_unique (fieldName) ) TYPE=MyISAM; -DROP TABLE IF EXISTS metaData_data; -CREATE TABLE metaData_data ( +DROP TABLE IF EXISTS metaData_values; +CREATE TABLE metaData_values ( fieldId int(11) NOT NULL default '0', wobjectId int(11) NOT NULL default '0', value varchar(100) default NULL, diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 063b311ff..ae37551e9 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -14,6 +14,8 @@ uploadsPath = /data/WebGUI/www/uploads templateCacheType=file +passiveProfileInterval = 86400 # in seconds + emailRecoveryLoggingEnabled = 1 passwordChangeLoggingEnabled = 1 diff --git a/lib/WebGUI/Help/WebGUI.pm b/lib/WebGUI/Help/WebGUI.pm index 732d805c5..0b09b582a 100644 --- a/lib/WebGUI/Help/WebGUI.pm +++ b/lib/WebGUI/Help/WebGUI.pm @@ -185,6 +185,10 @@ our $HELP = { tag => 'message board add/edit', namespace => 'MessageBoard' }, + { + tag => 'metadata manage', + namespace => 'WebGUI' + }, { tag => 'poll add/edit', namespace => 'Poll' @@ -1109,6 +1113,39 @@ our $HELP = { } ] }, + 'metadata manage'=> { + title => 'Metadata, Manage', + body => 'metadata manage body', + related => [ + { + tag => 'user macros', + namespace => 'WebGUI' + }, + { + tag => 'wobject add/edit', + namespace => 'WebGUI', + }, + ], + }, + 'metadata edit property' => { + title => 'Metadata, Edit property', + body => 'metadata edit property body', + related => [ + { + tag => 'metadata manage', + namespace => 'WebGUI' + }, + { + tag => 'user macros', + namespace => 'WebGUI' + }, + { + tag => 'wobject add/edit', + namespace => 'WebGUI', + }, + ], + }, + }; 1; diff --git a/lib/WebGUI/Help/WobjectProxy.pm b/lib/WebGUI/Help/WobjectProxy.pm index e6efc3f7d..95081f1cc 100644 --- a/lib/WebGUI/Help/WobjectProxy.pm +++ b/lib/WebGUI/Help/WobjectProxy.pm @@ -8,7 +8,12 @@ our $HELP = { { tag => 'wobjects using', namespace => 'WebGUI' - } + }, + { + tag => 'metadata manage', + namespace => 'WebGUI' + }, + ] }, }; diff --git a/lib/WebGUI/Macro/AOIHits.pm b/lib/WebGUI/Macro/AOIHits.pm index 402546787..11226b598 100644 --- a/lib/WebGUI/Macro/AOIHits.pm +++ b/lib/WebGUI/Macro/AOIHits.pm @@ -21,7 +21,7 @@ sub process { @param = WebGUI::Macro::getParams($_[0]); my $key = $param[0]; my $value = $param[1]; - my $sql = "select count from passiveProfileAOI a, metaData_fields f + my $sql = "select count from passiveProfileAOI a, metaData_properties f where a.fieldId=f.fieldId and userId=".quote($session{user}{userId})." and fieldName=".quote($key)." diff --git a/lib/WebGUI/Macro/AOIRank.pm b/lib/WebGUI/Macro/AOIRank.pm index e91308ea9..ab6005f3c 100644 --- a/lib/WebGUI/Macro/AOIRank.pm +++ b/lib/WebGUI/Macro/AOIRank.pm @@ -22,7 +22,7 @@ sub process { my $key = $param[0]; my $rank = $param[1] || 1; # 1 is highest rank $rank--; # Rank is zero based - my $sql = "select value from passiveProfileAOI a, metaData_fields f + my $sql = "select value from passiveProfileAOI a, metaData_properties f where a.fieldId=f.fieldId and userId=".quote($session{user}{userId})." and fieldName=".quote($key)." order by a.count desc"; diff --git a/lib/WebGUI/MetaData.pm b/lib/WebGUI/MetaData.pm index 8fe41468c..682e1dd50 100644 --- a/lib/WebGUI/MetaData.pm +++ b/lib/WebGUI/MetaData.pm @@ -33,8 +33,16 @@ This package provides an interface to the MetaData system. =head1 SYNOPSIS use WebGUI::MetaData; + + $wid = getWobjectByCriteria($hashRef); + $hashRef = WebGUI::MetaData::getField( $fieldId ); + $hashRef = WebGUI::MetaData::getMetaDataFields(); + $wid = getWobjectByCriteria($hashRef); $arrayRef = WebGUI::MetaData::getFieldTypes; - $hashRef = WebGUI::MetaData::getMetaDataFields; + WebGUI::MetaData::metaDataSave( $wobjectId ) + WebGUI::MetaData::metaDataDelete( $wobjectId ) + WebGUI::MetaData::MetaDataDuplicate( $fromWobjectId , $toWobjectId ) + WebGUI::MetaData::deleteField( $fieldId ); =head1 METHODS @@ -75,8 +83,8 @@ The fieldId to be deleted. sub deleteField { my $fieldId = shift; return unless ($fieldId =~ /^\d+$/); - WebGUI::SQL->write("delete from metaData_fields where fieldId = ".quote($fieldId)); - WebGUI::SQL->write("delete from metaData_data where fieldId = ".quote($fieldId)); + WebGUI::SQL->write("delete from metaData_properties where fieldId = ".quote($fieldId)); + WebGUI::SQL->write("delete from metaData_values where fieldId = ".quote($fieldId)); } #------------------------------------------------------------------- @@ -147,8 +155,8 @@ sub getMetaDataFields { f.fieldType, f.possibleValues, d.value - from metaData_fields f - left join metaData_data d on f.fieldId=d.fieldId and d.wobjectId=".quote($wobjectId); + from metaData_properties f + left join metaData_values d on f.fieldId=d.fieldId and d.wobjectId=".quote($wobjectId); $sql .= " where f.fieldId = ".quote($fieldId) if ($fieldId); $sql .= " order by f.fieldName"; my $sth = WebGUI::SQL->read($sql); @@ -182,19 +190,19 @@ sub metaDataSave { foreach my $form (keys %{$session{form}}) { if ($form =~ /^metadata_(\d+)$/) { my $fieldId = $1; - my ($exists) = WebGUI::SQL->quickArray("select count(*) from metaData_data + my ($exists) = WebGUI::SQL->quickArray("select count(*) from metaData_values where wobjectId = ".quote($wobjectId)." and fieldId = ".quote($fieldId)); if(! $exists && $session{form}{$form} ne "") { - WebGUI::SQL->write("insert into metaData_data (fieldId, wobjectId) + WebGUI::SQL->write("insert into metaData_values (fieldId, wobjectId) values (".quote($fieldId).",".quote($wobjectId).")"); } if($session{form}{$form} eq "") { # Keep it clean - WebGUI::SQL->write("delete from metaData_data where wobjectId = ". + WebGUI::SQL->write("delete from metaData_values where wobjectId = ". quote($wobjectId)." and fieldId = ".quote($fieldId)); } else { - WebGUI::SQL->write("update metaData_data set value = ".quote($session{form}{$form})." + WebGUI::SQL->write("update metaData_values set value = ".quote($session{form}{$form})." where wobjectId = ".quote($wobjectId)." and fieldId = ". quote($fieldId)); } @@ -220,7 +228,7 @@ The Id from the wobject you want to delete metadata for. sub metaDataDelete { my $wobjectId = shift; - return WebGUI::SQL->write("delete from metaData_data where wobjectId = ".quote($wobjectId)); + return WebGUI::SQL->write("delete from metaData_values where wobjectId = ".quote($wobjectId)); } #------------------------------------------------------------------- @@ -246,9 +254,9 @@ The new wobject Id sub MetaDataDuplicate { my $fromWobjectId = shift; my $toWobjectId = shift; - my $sth = WebGUI::SQL->read("select * from metaData_data where wobjectId = ".quote($fromWobjectId)); + my $sth = WebGUI::SQL->read("select * from metaData_values where wobjectId = ".quote($fromWobjectId)); while( my $h = $sth->hashRef) { - WebGUI::SQL->write("insert into metaData_data (fieldId, wobjectId, value) values (". + WebGUI::SQL->write("insert into metaData_values (fieldId, wobjectId, value) values (". quote($h->{fieldId}).",".quote($toWobjectId).",".quote($h->{value}).")"); } $sth->finish; @@ -341,7 +349,7 @@ sub getWobjectByCriteria { $constraint =~ s/\Q$expression/$replacement/; } my $sql = " select w.wobjectId - from metaData_data d, metaData_fields f, wobject w + from metaData_values d, metaData_properties f, wobject w where f.fieldId = d.fieldId and w.wobjectId = d.wobjectId and w.namespace = ".quote($namespace); diff --git a/lib/WebGUI/Operation/MetaData.pm b/lib/WebGUI/Operation/MetaData.pm index 8743428a5..b2e36c0c7 100644 --- a/lib/WebGUI/Operation/MetaData.pm +++ b/lib/WebGUI/Operation/MetaData.pm @@ -56,8 +56,7 @@ sub www_editMetaDataField { return WebGUI::Privilege::vitalComponent() if ($session{form}{fid} < 1000 && $session{form}{fid} > 0); my ($output, $fieldName, $defaultValue, $description, $fieldInfo); - # TODO: add help / internationlize - $output = helpIcon(22); + $output = helpIcon('metadata edit property'); $output .= '
'. + WebGUI::International::get('Add new field','MetaData'). + '
' + ); } my $output; $output = helpIcon($helpId,$self->get("namespace")) if ($helpId); diff --git a/lib/WebGUI/Wobject/WobjectProxy.pm b/lib/WebGUI/Wobject/WobjectProxy.pm index d634d184f..053dda5e8 100644 --- a/lib/WebGUI/Wobject/WobjectProxy.pm +++ b/lib/WebGUI/Wobject/WobjectProxy.pm @@ -124,11 +124,12 @@ sub www_edit { -label=>WebGUI::International::get(1,$_[0]->get("namespace")), -value=>''.$data[1].' ('.$_[0]->get("proxiedWobjectId").')' ); - $properties->yesNo( - -name=>"proxyByCriteria", - -value=>$_[0]->getValue("proxyByCriteria"), - -label=>WebGUI::International::get("Proxy by alternate criteria?",$_[0]->get("namespace")), - -extras=>q|Onchange=" + if($session{setting}{metaDataEnabled}) { + $properties->yesNo( + -name=>"proxyByCriteria", + -value=>$_[0]->getValue("proxyByCriteria"), + -label=>WebGUI::International::get("Proxy by alternate criteria?",$_[0]->get("namespace")), + -extras=>q|Onchange=" if (this.form.proxyByCriteria[0].checked) { this.form.resolveMultiples.disabled=false; this.form.proxyCriteria.disabled=false; @@ -137,26 +138,25 @@ sub www_edit { this.form.proxyCriteria.disabled=true; }"| ); - my $extras; - if ($_[0]->getValue("proxyByCriteria") == 0) { - $extras = 'disabled=true'; - } - $properties->selectList( - -name=>"resolveMultiples", - -value=>[ $_[0]->getValue("resolveMultiples") ], - -label=>WebGUI::International::get("Resolve Multiples?",$_[0]->get("namespace")), - -options=>{ + if ($_[0]->getValue("proxyByCriteria") == 0) { + $_[0]->{_disabled} = 'disabled=true'; + } + $properties->selectList( + -name=>"resolveMultiples", + -value=>[ $_[0]->getValue("resolveMultiples") ], + -label=>WebGUI::International::get("Resolve Multiples?",$_[0]->get("namespace")), + -options=>{ mostRecent=>WebGUI::International::get("Most Recent",$_[0]->get("namespace")), random=>WebGUI::International::get("Random",$_[0]->get("namespace")), }, - -extras=>$extras + -extras=>$_[0]->{_disabled} ); - $properties->readOnly( - -value=>$_[0]->_drawQueryBuilder(), - -label=>WebGUI::International::get("Criteria",$_[0]->get("namespace")), - - ); + $properties->readOnly( + -value=>$_[0]->_drawQueryBuilder(), + -label=>WebGUI::International::get("Criteria",$_[0]->get("namespace")), + ); + } return $_[0]->SUPER::www_edit( -properties=>$properties->printRowsOnly, -layout=>$layout->printRowsOnly, @@ -197,6 +197,7 @@ sub _drawQueryBuilder { my $proxyCriteriaField = WebGUI::Form::textarea({ name=>"proxyCriteria", value=>$_[0]->getValue("proxyCriteria"), + extras=>'style="width: 100%" '.$_[0]->{_disabled} }); my $conjunctionField = WebGUI::Form::selectList({ name=>"conjunction", @@ -216,7 +217,7 @@ sub _drawQueryBuilder { $output .= qq|| $proxyCriteriaField | +$proxyCriteriaField | ||||||||
| diff --git a/lib/WebGUI/i18n/English/MetaData.pm b/lib/WebGUI/i18n/English/MetaData.pm index 76096939a..56bb6c4f8 100644 --- a/lib/WebGUI/i18n/English/MetaData.pm +++ b/lib/WebGUI/i18n/English/MetaData.pm @@ -6,16 +6,20 @@ our $I18N = { lastUpdated => 1089039511, context => 'Label for tab' }, + 'errorEmptyField' => { + message => q| | |||||||||