diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index 4d61d759b..d4d49e817 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -305,6 +305,10 @@ sub definition { fieldType=>"email", defaultValue=>undef }, + mailPrefix=>{ + fieldType=>"text", + defaultValue=>undef + }, getMailCronId=>{ fieldType=>"hidden", defaultValue=>undef, @@ -513,6 +517,12 @@ sub getEditForm { label=>$i18n->get("get mail interval"), hoverHelp=>$i18n->get("get mail interval help"), ); + $tabform->getTab("mail")->text( + name=>"mailPrefix", + value=>$self->getValue("mailPrefix"), + label=>$i18n->get("mail prefix"), + hoverHelp=>$i18n->get("mail prefix help"), + ); $tabform->getTab("display")->interval( -name=>"visitorCacheTimeout", -label=>$i18n->get('visitor cache timeout'), diff --git a/lib/WebGUI/Operation/WebGUI.pm b/lib/WebGUI/Operation/WebGUI.pm index adbee4cf3..11d9ad9d3 100644 --- a/lib/WebGUI/Operation/WebGUI.pm +++ b/lib/WebGUI/Operation/WebGUI.pm @@ -163,84 +163,11 @@ to work, even superseding the session variable. sub www_theWg { my $session = shift; $session->style->useEmptyStyle("1"); - my $output = 'WebGUI
-packageWebGUI;our$VERSION="5.5.0";usestrictqw(varssubs);useTie::CPHash;useW + my $output = q|WebGUI +
packageWebGUI;our$VERSION="|.$WebGUI::VERSION.q|";subpage{my$session=shift;my$assetUrl=shift\|\|$s
ession->url->getRequestedUrl;my$output=processOperations($session);if($outputeq"
"){my$asset=eval{WebGUI::Asset->newByUrl($session,$assetUrl,$session->form->proc
ess("revision"))};if($@){$session->errorHandler->warn("Couldn'tinstantiateassetf
orurl:".$assetUrl."Rootcause:".$@);}if(defined$asset){my$method="view";if($sessi
on->form->process("func")){$method=$session->form->process("func");unless($metho
d=~/^[A-Za-z]+$/){$session->errorHandler->security("tocallanon-existentmethod$me
thodon$assetUrl");$method="view";}}$output=tryAssetMethod($session,$asset,$metho
d);$output=tryAssetMethod($session,$asset,"view")unless($output\|\|($methodeq"view
"));}}if(defined($output)and$outputeq""){if($session->var->isAdminOn){my$asset=W
ebGUI::Asset->newByUrl($session,$session->url->getRefererUrl)\|\|WebGUI::Asset->ge
tDefault($session);$session->http->setRedirect($asset->getUrl("func=add;class=We
bGUI::Asset::Wobject::Layout;url=".$assetUrl));}else{$session->http->setStatus("
404","PageNotFound");my$notFound=WebGUI::Asset->getNotFound($session);if(defined
$notFound){$output=tryAssetMethod($session,$notFound,'view');}else{$session->err
orHandler->error("ThenotFoundpagecouldnotbeinstanciated!");$output="Anerrorwasen
counteredwhileprocessingyourrequest.";}$output="Anerrorwasencounteredwhileproces
singyourrequest."if$outputeq'';}}if($outputeq"chunked"){$output=undef;}return$ou
tput;}subprocessOperations{my$session=shift;my$output="";my$op=$session->form->p
rocess("op");if($op){$output=WebGUI::Operation::execute($session,$op);}return$ou
tput;}packageWebGUI::Asset;subcanView{my$self=shift;my$userId=shift\|\|$self->sess
ion->user->userId;my$user=WebGUI::User->new($self->session,$userId);return0unles
s($self->get("state")eq"published");if($userIdeq$self->get("ownerUserId")){retur
n1;}elsif($user->isInGroup($self->get("groupIdView"))){return1;}return$self->can
Edit($userId);}subnew{my$class=shift;my$session=shift;my$assetId=shift;returnund
efunless($assetId);my$className=shift;my$assetRevision=$session->stow->get("asse
tRevision");my$revisionDate=shift\|\|$assetRevision->{$assetId}{$session->scratch-
>get("versionTag")\|\|'_'};unless($revisionDate){($revisionDate)=$session->db->qui
ckArray("selectmax(revisionDate)fromassetDatawhereassetId=?and(status='approved'
orstatus='archived'ortagId=?)orderbyassetData.revisionDate",[$assetId,$session->
scratch->get("versionTag")]);$assetRevision->{$assetId}{$session->scratch->get("
versionTag")\|\|'_'}=$revisionDate;$session->stow->set("assetRevision",$assetRevis
ion);}returnundefunless($revisionDate);if($className){my$cmd="use".$className;ev
al($cmd);if($@){$session->errorHandler->error("Couldn'tcompileassetpackage:".$cl
assName.".Rootcause:".$@);returnundef;}$class=$className;}my$cache=WebGUI::Cache
->new($session,["asset",$assetId,$revisionDate]);my$properties=$cache->get;if(ex
ists$properties->{assetId}){#gotpropertiesfromcache}else{my$sql="select*fromasse
t";foreachmy$definition(@{$class->definition($session)}){$sql.="leftjoin".$defin
ition->{tableName}."onasset.assetId=".$definition->{tableName}.".assetIdand".$de
finition->{tableName}.".revisionDate=".$revisionDate;}$sql.="whereasset.assetId=
".$session->db->quote($assetId);$properties=$session->db->quickHashRef($sql);ret
urnundefunless(exists$properties->{assetId});$cache->set($properties,60*60*24);}
if(defined$properties){my$object={_session=>$session,_properties=>$properties};b
less$object,$class;return$object;}returnundef;}subaddRevision{my$self=shift;my$p
roperties=shift;my$now=shift\|\|$self->session->datetime->time();my$workingTag=Web
GUI::VersionTag->getWorking($self->session);$self->session->db->write("insertint
oassetData(assetId,revisionDate,revisedBy,tagId,status,url,ownerUserId,groupIdEd
-
ebGUI::Cache;useWebGUI::ErrorHandler;useWebGUI::Icon;useWebGUI::Internation - -
al;useWebGUI::Macro;useWebGUI::Operation;useWebGUI::Privilege;useWebGUI::Se - -
s
sion;useWebGUI::SQL;useWebGUI::Style;useWebGUI::Page;useWebGUI::Template;u - -
s
eWebGUI::URL;useWebGUI::Utility;sub_generateDebug{if($session{setting}{sho - -
w
Debug}||($session->form->process("debug")==1&&$session->privilege->isInGroup(3))){retur - -
nW
ebGUI::ErrorHandler::showDebug();}return"";}sub_generatePage{my($canEdit, - -
$pageEdit,$sth,$wobject,%contentHash,$originalWobject,$sql,$extra,%hash,$cm - -
d,$w,$template,$canEditWobject);if(WebGUI::Privilege::canViewPage()){if($se - -
ssion{var}{adminOn}){$canEdit=WebGUI::Privilege::canEditPage();if($canEdit) - -
{$pageEdit="\n<br>".pageIcon().deleteIcon("op=deletePage").editIcon("op=edi - -
tPage").moveUpIcon("op=movePageUp").moveDownIcon("op=movePageDown").cutIcon - -
("op=cutPage")."\n";}}$sth=WebGUI::SQL->read("select*fromwobjectwherepageId - -
=$session{page}{pageId}orderbysequenceNumber,wobjectId");while($wobject=$st - -
h->hashRef){#--EaterEggGoesHere!!!Includes$session->privilege->canEditWobject - -
()asp
artofthechecksumof$canEdit$canEditWobject=$canEdit&&WebGUI::Privilege: - -
:canE
ditWobject($wobject->{wobjectId});#--EndChangesif($session{var}{adminO - -
n}&&$
canEditWobject){$contentHash{"page.position".${$wobject}{templatePosit - -
ion}}
.="\n<hr>".wobjectIcon().deleteIcon("func=delete&wid=".${$wobject}{wob - -
jectId}
).editIcon("func=edit&wid=".${$wobject}{wobjectId}).moveUpIcon("func - -
=moveUp&wid=".
${$wobject}{wobjectId}).moveDownIcon("func=moveDown&wid=".${$ - -
wobject}{wobj
ectId}).moveTopIcon("func=moveTop&wid=".${$wobject}{wobjectId} - -
).moveBottomI
con("func=moveBottom&wid=".${$wobject}{wobjectId}).cutIcon("fu - -
nc=cut&wid=".
${$wobject}{wobjectId}).$session->icon->copy("func=copy&wid=".${$wobject}{ - -
wobjectId});
if(${$wobject}{namespace}ne"WobjectProxy"&&isIn("WobjectProxy", - -
@{$session{c
onfig}{wobjects}})){$contentHash{"page.position".${$wobject}{te - -
mplatePositi
on}}.=shortcutIcon("func=createShortcut&wid=".${$wobject}{wobje - -
ctId})}$con
tentHash{"page.position".${$wobject}{templatePosition}}.="<br>"; - -
}#--EasterEg
gGoesHere!!Checksifuserhasprivilegetoviewthewobjectif(!WebGUI:: - -
Privilege::c
anViewWobject($wobject->{wobjectId})){next;}#--EndChangesif(${$ - -
wobject}{nam
espace}eq"WobjectProxy"){$originalWobject=$wobject;my($wobjectP - -
roxy)=WebGUI:
:SQL->quickHashRef("select*fromWobjectProxywherewobjectId=".${ - -
$wobject}{wobj
ectId});$wobject=WebGUI::SQL->quickHashRef("select*fromwobjec - -
twherewobject.w
objectId=".$wobjectProxy->{proxiedWobjectId});if(${$wobject} - -
{namespace}eq""){
$wobject=$originalWobject;}else{${$wobject}{startDate}=${$ - -
originalWobject}{s
tartDate};${$wobject}{endDate}=${$originalWobject}{endDat - -
e};${$wobject}{templ
atePosition}=${$originalWobject}{templatePosition};${$w - -
object}{_WobjectProxy}=${
$originalWobject}{wobjectId};if($wobjectProxy->{ov - -


'; + +|; return $output; } 1; diff --git a/lib/WebGUI/Workflow/Instance.pm b/lib/WebGUI/Workflow/Instance.pm index 5ebcaa4ed..908eeacab 100644 --- a/lib/WebGUI/Workflow/Instance.pm +++ b/lib/WebGUI/Workflow/Instance.pm @@ -64,7 +64,8 @@ sub create { my $properties = shift; my $id = shift; my ($isSerial) = $session->db->quickArray("select isSerial from Workflow where workflowId=?",[$properties->{workflowId}]); - my ($count) = $session->db->quickArray("select count(*) from WorkflowInstance where workflowId=?",[$properties->{workflowId}]); + my $params = (exists $properties->{parameters}) ? JSON::objToJson({parameters => $properties->{parameters}}) : undef; + my ($count) = $session->db->quickArray("select count(*) from WorkflowInstance where workflowId=? and parameters=?",[$properties->{workflowId},$params]); return undef if ($isSerial && $count); my $instanceId = $session->db->setRow("WorkflowInstance","instanceId",{instanceId=>"new", runningSince=>time()}, $id); my $self = $class->new($session, $instanceId); diff --git a/lib/WebGUI/i18n/English/Asset_Collaboration.pm b/lib/WebGUI/i18n/English/Asset_Collaboration.pm index 825add1fb..71c1f18fc 100644 --- a/lib/WebGUI/i18n/English/Asset_Collaboration.pm +++ b/lib/WebGUI/i18n/English/Asset_Collaboration.pm @@ -2,6 +2,18 @@ package WebGUI::i18n::English::Asset_Collaboration; our $I18N = { + 'mail prefix' => { + message => q|Prefix|, + lastUpdated => 0, + context => q|field label for mail setting| + }, + + 'mail prefix help' => { + message => q|This string will be prepended to the subject line of all emails sent out from this collaboration system.|, + lastUpdated => 0, + context => q|help for mail setting field label| + }, + 'get mail interval' => { message => q|Check Mail Every|, lastUpdated => 0, diff --git a/www/extras/adminConsole/adminConsole.css b/www/extras/adminConsole/adminConsole.css index 8f5df51ab..a54463d8f 100644 --- a/www/extras/adminConsole/adminConsole.css +++ b/www/extras/adminConsole/adminConsole.css @@ -74,6 +74,7 @@ th { .adminConsoleMainMenu:hover, .adminConsoleUtilityMenu:hover { opacity: 1.0; + background-color: #fafafa; } .adminConsoleMainMenu { @@ -81,8 +82,8 @@ th { padding: 5px; margin: 5px; -moz-border-radius: 5px; - background-color: #fafafa; - opacity: 0.6; + background-color: #bbbbbb; + opacity: 0.7; } .adminConsoleSubmenu { @@ -99,7 +100,7 @@ th { padding: 5px; margin: 5px; -moz-border-radius: 5px; - background-color: #fafafa; + background-color: #bbbbbb; } .adminConsoleHidden {