Merge commit WebGUI_7.6.9-beta into survey-rfe
* commit 'tags/WebGUI_7.6.9-beta': (31 commits) Release 7.6.9-beta preparing for 7.6.9 release fixed: Exporting to static files can leak large amounts of memory fixed: HTTP Proxy doesn't serve new content to visitors use to_json and from_json in more places instead of encode_json and decode_json Document the heretofore missing date template variable in Qualify a chained method call when getting Workflow instances. If the Attempt to fix IE6 bug fixed: ukplayer example is now loaded with swfobject.js released under the MIT licence, see gotcha's and /extras/ukplayer Added a style for printing Alumni pages Emails sent about low stock should have status unread, not completed. Moved draggable.js to extras/yui-webgui/build/layout since it is now a wrapper around YUI dragdrob Attributions in the changelog for a patch provided to fix a bug. whups, left in console.logs Updated draggable.js to wrap the YUI fixed #4137: Calendar Search page has extra head tags in body Fix a typo typo in the Operation/Workflow POD. Forward port Shelf view fix. Was not displaying child shelves, only self. Forward port the PayDriver bug fixes from 7.5 branch. Labels are always fixed #9264: new slideShow.swf uploaded in extras/ukplayer (United Knowledge/Arjan Widlak) ... Conflicts: lib/WebGUI/Asset/Wobject/Survey.pm
This commit is contained in:
commit
1376c8ae92
60 changed files with 999 additions and 1199 deletions
|
|
@ -1,3 +1,18 @@
|
||||||
|
7.6.9
|
||||||
|
- fixed: ukplayer example is now loaded with swfobject.js released under the
|
||||||
|
MIT licence, see gotcha's and /extras/ukplayer
|
||||||
|
- fixed #9264: new slideShow.swf uploaded in extras/ukplayer (United Knowledge/Arjan Widlak)
|
||||||
|
- fixed #9428: added code to ASSET::get to include keywords when no property name is requested
|
||||||
|
- marked sbin scripts as executable
|
||||||
|
- fixed #9492: Problem in passing form variables to Macro SQL inside a snippet
|
||||||
|
- fixed #9404: Head tags for admin user with admin mode off
|
||||||
|
- fixed #9507: Navigation: relDepth is calculated with starting point, instead of the first displayed page
|
||||||
|
- fixed a bug where no Payment Gateway labels show up when checking out.
|
||||||
|
- fixed #9511: Subcategories displayed incorrectly (Henry Tang, Long Term Results B.v.)
|
||||||
|
- fixed #4137: Calendar Search page has head tags in body
|
||||||
|
- fixed: HTTP Proxy doesn't serve new content to visitors
|
||||||
|
- fixed: Exporting to static files can leak large amounts of memory
|
||||||
|
|
||||||
7.6.8
|
7.6.8
|
||||||
- added #!/usr/bin/env perl to all utility scripts
|
- added #!/usr/bin/env perl to all utility scripts
|
||||||
- Updated captcha images to be more legible.
|
- Updated captcha images to be more legible.
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -7,6 +7,14 @@ upgrading from one version to the next, or even between multiple
|
||||||
versions. Be sure to heed the warnings contained herein as they will
|
versions. Be sure to heed the warnings contained herein as they will
|
||||||
save you many hours of grief.
|
save you many hours of grief.
|
||||||
|
|
||||||
|
7.6.9
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
* The ukplayer example, slideshow.html in /extras/ukplayer, used
|
||||||
|
to be loaded with a javascript called AC_RunActiveContent.js.
|
||||||
|
This file is removed due to licencing issues. If you use this
|
||||||
|
script in custom HTML, you should replace it with swfobject.js
|
||||||
|
as is demonstrated in the new example slideshow.html file.
|
||||||
|
|
||||||
7.6.8
|
7.6.8
|
||||||
--------------------------------------------------------------------
|
--------------------------------------------------------------------
|
||||||
* Due to an error during the 7.6.6 development cycle, an Itransact template,
|
* Due to an error during the 7.6.6 development cycle, an Itransact template,
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
149
docs/upgrades/upgrade_7.6.8-7.6.9.pl
Normal file
149
docs/upgrades/upgrade_7.6.8-7.6.9.pl
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2008 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
our ($webguiRoot);
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
$webguiRoot = "../..";
|
||||||
|
unshift (@INC, $webguiRoot."/lib");
|
||||||
|
}
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Getopt::Long;
|
||||||
|
use WebGUI::Session;
|
||||||
|
use WebGUI::Storage;
|
||||||
|
use WebGUI::Asset;
|
||||||
|
use WebGUI::Shop::Pay;
|
||||||
|
use WebGUI::Shop::PayDriver;
|
||||||
|
|
||||||
|
|
||||||
|
my $toVersion = '7.6.9';
|
||||||
|
my $quiet; # this line required
|
||||||
|
|
||||||
|
|
||||||
|
my $session = start(); # this line required
|
||||||
|
|
||||||
|
# upgrade functions go here
|
||||||
|
fixPayDriverLabels($session);
|
||||||
|
|
||||||
|
finish($session); # this line required
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Describe what our function does
|
||||||
|
#sub exampleFunction {
|
||||||
|
# my $session = shift;
|
||||||
|
# print "\tWe're doing some stuff here that you should know about... " unless $quiet;
|
||||||
|
# # and here's our code
|
||||||
|
# print "DONE!\n" unless $quiet;
|
||||||
|
#}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Get rid of the duplicate label properties in the PayDrivers.
|
||||||
|
sub fixPayDriverLabels {
|
||||||
|
my $session = shift;
|
||||||
|
print "\tGet rid of the duplicate label properties in the PayDrivers... " unless $quiet;
|
||||||
|
my $pay = WebGUI::Shop::Pay->new($session);
|
||||||
|
my $gateways = $pay->getPaymentGateways;
|
||||||
|
foreach my $gateway (@{ $gateways }) {
|
||||||
|
my $gatewayId = $gateway->getId;
|
||||||
|
my $jsonLabel = $gateway->get('label');
|
||||||
|
next if $jsonLabel;
|
||||||
|
my $dbLabel = $session->db->quickScalar('select label from paymentGateway where paymentGatewayId=?', [$gatewayId]);
|
||||||
|
my $properties = $gateway->get();
|
||||||
|
$properties->{label} = $dbLabel;
|
||||||
|
$gateway->update($properties);
|
||||||
|
}
|
||||||
|
$session->db->write('alter table paymentGateway drop column label');
|
||||||
|
print "DONE!\n" unless $quiet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Add a package to the import node
|
||||||
|
sub addPackage {
|
||||||
|
my $session = shift;
|
||||||
|
my $file = shift;
|
||||||
|
|
||||||
|
# Make a storage location for the package
|
||||||
|
my $storage = WebGUI::Storage->createTemp( $session );
|
||||||
|
$storage->addFileFromFilesystem( $file );
|
||||||
|
|
||||||
|
# Import the package into the import node
|
||||||
|
my $package = WebGUI::Asset->getImportNode($session)->importPackage( $storage );
|
||||||
|
|
||||||
|
# Make the package not a package anymore
|
||||||
|
$package->update({ isPackage => 0 });
|
||||||
|
|
||||||
|
# Set the default flag for templates added
|
||||||
|
my $assetIds
|
||||||
|
= $package->getLineage( ['self','descendants'], {
|
||||||
|
includeOnlyClasses => [ 'WebGUI::Asset::Template' ],
|
||||||
|
} );
|
||||||
|
for my $assetId ( @{ $assetIds } ) {
|
||||||
|
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId );
|
||||||
|
if ( !$asset ) {
|
||||||
|
print "Couldn't instantiate asset with ID '$assetId'. Please check package '$file' for corruption.\n";
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$asset->update( { isDefault => 1 } );
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------
|
||||||
|
sub start {
|
||||||
|
my $configFile;
|
||||||
|
$|=1; #disable output buffering
|
||||||
|
GetOptions(
|
||||||
|
'configFile=s'=>\$configFile,
|
||||||
|
'quiet'=>\$quiet
|
||||||
|
);
|
||||||
|
my $session = WebGUI::Session->open($webguiRoot,$configFile);
|
||||||
|
$session->user({userId=>3});
|
||||||
|
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||||
|
$versionTag->set({name=>"Upgrade to ".$toVersion});
|
||||||
|
return $session;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------
|
||||||
|
sub finish {
|
||||||
|
my $session = shift;
|
||||||
|
updateTemplates($session);
|
||||||
|
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||||
|
$versionTag->commit;
|
||||||
|
$session->db->write("insert into webguiVersion values (".$session->db->quote($toVersion).",'upgrade',".$session->datetime->time().")");
|
||||||
|
$session->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------
|
||||||
|
sub updateTemplates {
|
||||||
|
my $session = shift;
|
||||||
|
return undef unless (-d "packages-".$toVersion);
|
||||||
|
print "\tUpdating packages.\n" unless ($quiet);
|
||||||
|
opendir(DIR,"packages-".$toVersion);
|
||||||
|
my @files = readdir(DIR);
|
||||||
|
closedir(DIR);
|
||||||
|
my $newFolder = undef;
|
||||||
|
foreach my $file (@files) {
|
||||||
|
next unless ($file =~ /\.wgpkg$/);
|
||||||
|
# Fix the filename to include a path
|
||||||
|
$file = "packages-" . $toVersion . "/" . $file;
|
||||||
|
addPackage( $session, $file );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#vim:ft=perl
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package WebGUI;
|
package WebGUI;
|
||||||
|
|
||||||
|
|
||||||
our $VERSION = '7.6.8';
|
our $VERSION = '7.6.9';
|
||||||
our $STATUS = "beta";
|
our $STATUS = "beta";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -196,8 +196,15 @@ sub www_view {
|
||||||
my @contribs = ();
|
my @contribs = ();
|
||||||
foreach my $row ( @{$p->getPageData} ) {
|
foreach my $row ( @{$p->getPageData} ) {
|
||||||
my $assetId = $row->{assetId};
|
my $assetId = $row->{assetId};
|
||||||
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId );
|
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId );
|
||||||
push(@contribs,$asset->get);
|
my $props = $asset->get;
|
||||||
|
if (ref $asset eq "WebGUI::Asset::Post") {
|
||||||
|
$asset = $asset->getThread;
|
||||||
|
$props = $asset->get;
|
||||||
|
$props->{className} = "WebGUI::Asset::Post";
|
||||||
|
}
|
||||||
|
|
||||||
|
push(@contribs,$props);
|
||||||
}
|
}
|
||||||
my $contribsCount = $p->getRowCount;
|
my $contribsCount = $p->getRowCount;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -753,6 +753,8 @@ sub get {
|
||||||
return $self->{_properties}{$propertyName};
|
return $self->{_properties}{$propertyName};
|
||||||
}
|
}
|
||||||
my %copyOfHashRef = %{$self->{_properties}};
|
my %copyOfHashRef = %{$self->{_properties}};
|
||||||
|
my $keywords = WebGUI::Keyword->new($self->session)->getKeywordsForAsset({asset => $self});
|
||||||
|
if( $keywords ne '' ) { $copyOfHashRef{ keywords } = $keywords ; }
|
||||||
return \%copyOfHashRef;
|
return \%copyOfHashRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1331,7 +1333,7 @@ Returns a toolbar with a set of icons that hyperlink to functions that delete, e
|
||||||
|
|
||||||
sub getToolbar {
|
sub getToolbar {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return undef unless $self->canEdit;
|
return undef unless $self->canEdit && $self->session->var->isAdminOn;
|
||||||
return $self->{_toolbar}
|
return $self->{_toolbar}
|
||||||
if (exists $self->{_toolbar});
|
if (exists $self->{_toolbar});
|
||||||
my $userUiLevel = $self->session->user->profileField("uiLevel");
|
my $userUiLevel = $self->session->user->profileField("uiLevel");
|
||||||
|
|
@ -1430,6 +1432,7 @@ sub getToolbar {
|
||||||
. $self->getUrl("op=assetManager") . '">' . $i18n->get("manage") . '</a></li>';
|
. $self->getUrl("op=assetManager") . '">' . $i18n->get("manage") . '</a></li>';
|
||||||
}
|
}
|
||||||
$output .= '</ul></div></div>' . $toolbar . '</div>';
|
$output .= '</ul></div></div>' . $toolbar . '</div>';
|
||||||
|
$self->{_toolbar} = $output;
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1986,9 +1989,8 @@ Executes what is necessary to make the view() method work with content chunking.
|
||||||
|
|
||||||
sub prepareView {
|
sub prepareView {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
if ($self->session->var->isAdminOn) {
|
##Make the toolbar now and stick it in the cache.
|
||||||
$self->{_toolbar} = $self->getToolbar;
|
$self->getToolbar;
|
||||||
}
|
|
||||||
my $style = $self->session->style;
|
my $style = $self->session->style;
|
||||||
my @keywords = @{WebGUI::Keyword->new($self->session)->getKeywordsForAsset({asset=>$self, asArrayRef=>1})};
|
my @keywords = @{WebGUI::Keyword->new($self->session)->getKeywordsForAsset({asset=>$self, asArrayRef=>1})};
|
||||||
if (scalar @keywords) {
|
if (scalar @keywords) {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ use base 'WebGUI::Asset::File::GalleryFile';
|
||||||
|
|
||||||
use Carp qw( carp croak );
|
use Carp qw( carp croak );
|
||||||
use Image::ExifTool qw( :Public );
|
use Image::ExifTool qw( :Public );
|
||||||
use JSON qw/ encode_json decode_json /;
|
use JSON qw/ to_json from_json /;
|
||||||
use URI::Escape;
|
use URI::Escape;
|
||||||
use Tie::IxHash;
|
use Tie::IxHash;
|
||||||
use List::MoreUtils;
|
use List::MoreUtils;
|
||||||
|
|
@ -221,7 +221,7 @@ sub getExifData {
|
||||||
|
|
||||||
# Our processing and eliminating of bad / unparsable keys
|
# Our processing and eliminating of bad / unparsable keys
|
||||||
# isn't perfect, so handle errors gracefully
|
# isn't perfect, so handle errors gracefully
|
||||||
my $exif = eval { decode_json( $self->get('exifData') ) };
|
my $exif = eval { from_json( $self->get('exifData') ) };
|
||||||
if ( $@ ) {
|
if ( $@ ) {
|
||||||
$self->session->errorHandler->warn(
|
$self->session->errorHandler->warn(
|
||||||
"Could not parse JSON data for EXIF in Photo '" . $self->get('title')
|
"Could not parse JSON data for EXIF in Photo '" . $self->get('title')
|
||||||
|
|
@ -461,7 +461,7 @@ sub updateExifDataFromFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->update({
|
$self->update({
|
||||||
exifData => encode_json( $info ),
|
exifData => to_json( $info ),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -194,23 +194,24 @@ sub purgeCache {
|
||||||
sub view {
|
sub view {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $calledAsWebMethod = shift;
|
my $calledAsWebMethod = shift;
|
||||||
my $versionTag = WebGUI::VersionTag->getWorking($self->session, 1);
|
my $session = $self->session;
|
||||||
|
my $versionTag = WebGUI::VersionTag->getWorking($session, 1);
|
||||||
my $noCache =
|
my $noCache =
|
||||||
$self->session->var->isAdminOn
|
$session->var->isAdminOn
|
||||||
|| $self->get("cacheTimeout") <= 10
|
|| $self->get("cacheTimeout") <= 10
|
||||||
|| ($versionTag && $versionTag->getId eq $self->get("tagId"));
|
|| ($versionTag && $versionTag->getId eq $self->get("tagId"));
|
||||||
unless ($noCache) {
|
unless ($noCache) {
|
||||||
my $out = WebGUI::Cache->new($self->session,"view_".$calledAsWebMethod."_".$self->getId)->get;
|
my $out = WebGUI::Cache->new($session,"view_".$calledAsWebMethod."_".$self->getId)->get;
|
||||||
return $out if $out;
|
return $out if $out;
|
||||||
}
|
}
|
||||||
my $output = $self->get("snippet");
|
my $output = $self->get("snippet");
|
||||||
WebGUI::Macro::process($self->session,\$output);
|
$output = $self->getToolbar.$output if ($session->var->isAdminOn && !$calledAsWebMethod);
|
||||||
$output = $self->getToolbar.$output if ($self->session->var->isAdminOn && !$calledAsWebMethod);
|
|
||||||
if ($self->getValue("processAsTemplate")) {
|
if ($self->getValue("processAsTemplate")) {
|
||||||
$output = WebGUI::Asset::Template->processRaw($self->session, $output, $self->get);
|
$output = WebGUI::Asset::Template->processRaw($session, $output, $self->get);
|
||||||
}
|
}
|
||||||
|
WebGUI::Macro::process($session,\$output);
|
||||||
unless ($noCache) {
|
unless ($noCache) {
|
||||||
WebGUI::Cache->new($self->session,"view_".$calledAsWebMethod."_".$self->getId)->set($output,$self->get("cacheTimeout"));
|
WebGUI::Cache->new($session,"view_".$calledAsWebMethod."_".$self->getId)->set($output,$self->get("cacheTimeout"));
|
||||||
}
|
}
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2064,14 +2064,9 @@ sub www_search {
|
||||||
});
|
});
|
||||||
|
|
||||||
# This is very bad! It should be $self->processStyle or whatnot.
|
# This is very bad! It should be $self->processStyle or whatnot.
|
||||||
$self->session->http->sendHeader;
|
return $self->processStyle(
|
||||||
my $template = WebGUI::Asset::Template->new($self->session,$self->get("templateIdSearch"));
|
$self->processTemplate( $var, $self->get('templateIdSearch') )
|
||||||
my $style = $self->session->style->process($self->getSeparator,$self->get("styleTemplateId"));
|
);
|
||||||
my ($head, $foot) = split($self->getSeparator,$style);
|
|
||||||
$self->session->output->print($head, 1);
|
|
||||||
$self->session->output->print($self->processTemplate($var, undef, $template));
|
|
||||||
$self->session->output->print($foot, 1);
|
|
||||||
return "chunked";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,12 @@ sub definition {
|
||||||
return $class->SUPER::definition($session, $definition);
|
return $class->SUPER::definition($session, $definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
sub getContentLastModified {
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub getCookieJar {
|
sub getCookieJar {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,11 @@ sub prepareView {
|
||||||
if ($vars{showAdmin}) {
|
if ($vars{showAdmin}) {
|
||||||
# under normal circumstances we don't put HTML stuff in our code, but this will make it much easier
|
# under normal circumstances we don't put HTML stuff in our code, but this will make it much easier
|
||||||
# for end users to work with our templates
|
# for end users to work with our templates
|
||||||
$session->style->setScript($session->url->extras("draggable.js"),{ type=>"text/javascript" });
|
$session->style->setScript($session->url->extras("yui/build/yahoo-dom-event/yahoo-dom-event.js"),{ type=>"text/javascript" });
|
||||||
|
$session->style->setScript($session->url->extras("yui/build/animation/animation-min.js"),{ type=>"text/javascript" });
|
||||||
|
$session->style->setScript($session->url->extras("yui/build/dragdrop/dragdrop.js"),{ type=>"text/javascript" });
|
||||||
|
$session->style->setScript($session->url->extras("yui-webgui/build/layout/draggable.js"),{ type=>"text/javascript" });
|
||||||
|
|
||||||
$session->style->setLink($session->url->extras("draggable.css"),{ type=>"text/css", rel=>"stylesheet", media=>"all" });
|
$session->style->setLink($session->url->extras("draggable.css"),{ type=>"text/css", rel=>"stylesheet", media=>"all" });
|
||||||
$session->style->setRawHeadTags('
|
$session->style->setRawHeadTags('
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
|
||||||
|
|
@ -439,7 +439,7 @@ sub view {
|
||||||
# build nav variables
|
# build nav variables
|
||||||
$pageData->{"page.rank"} = $asset->getRank;
|
$pageData->{"page.rank"} = $asset->getRank;
|
||||||
$pageData->{"page.absDepth"} = $asset->getLineageLength;
|
$pageData->{"page.absDepth"} = $asset->getLineageLength;
|
||||||
$pageData->{"page.relDepth"} = $asset->getLineageLength - $start->getLineageLength;
|
$pageData->{"page.relDepth"} = $asset->getLineageLength - $absoluteDepthOfFirstPage;
|
||||||
$pageData->{"page.isSystem"} = $asset->get("isSystem");
|
$pageData->{"page.isSystem"} = $asset->get("isSystem");
|
||||||
$pageData->{"page.isHidden"} = $asset->get("isHidden");
|
$pageData->{"page.isHidden"} = $asset->get("isHidden");
|
||||||
$pageData->{"page.isViewable"} = $asset->canView;
|
$pageData->{"page.isViewable"} = $asset->canView;
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,7 @@ sub freezeGraphConfig {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $obj = shift;
|
my $obj = shift;
|
||||||
|
|
||||||
return JSON::encode_json($obj);
|
return JSON::to_json($obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -404,7 +404,7 @@ sub thawGraphConfig {
|
||||||
my $string = shift;
|
my $string = shift;
|
||||||
|
|
||||||
return unless $string;
|
return unless $string;
|
||||||
return JSON::decode_json($string);
|
return JSON::from_json($string);
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,8 @@ sub view {
|
||||||
my @childShelves = ();
|
my @childShelves = ();
|
||||||
foreach my $child (@{$self->getLineage(['children'],{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Wobject::Shelf']})}) {
|
foreach my $child (@{$self->getLineage(['children'],{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Wobject::Shelf']})}) {
|
||||||
my $properties = $child->get;
|
my $properties = $child->get;
|
||||||
$child->{url} = $self->getUrl;
|
$child->{url} = $child->getUrl;
|
||||||
|
$child->{title} = $child->getTitle;
|
||||||
push @childShelves, $child;
|
push @childShelves, $child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,8 @@ sub exportAsHtml {
|
||||||
my $message = sprintf( $i18n->get('bad user privileges') . "\n") . $asset->getUrl;
|
my $message = sprintf( $i18n->get('bad user privileges') . "\n") . $asset->getUrl;
|
||||||
$self->session->output->print($message);
|
$self->session->output->print($message);
|
||||||
}
|
}
|
||||||
|
$exportSession->var->end;
|
||||||
|
$exportSession->close;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -307,12 +309,16 @@ sub exportAsHtml {
|
||||||
if( !$quiet ) {
|
if( !$quiet ) {
|
||||||
$self->session->output->print("$fullPath skipped, not exportable<br />");
|
$self->session->output->print("$fullPath skipped, not exportable<br />");
|
||||||
}
|
}
|
||||||
|
$exportSession->var->end;
|
||||||
|
$exportSession->close;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
# tell the user which asset we're exporting.
|
# tell the user which asset we're exporting.
|
||||||
unless ($quiet) {
|
unless ($quiet) {
|
||||||
my $message = sprintf $i18n->get('exporting page'), $fullPath;
|
my $message = sprintf $i18n->get('exporting page'), $fullPath;
|
||||||
|
$exportSession->var->end;
|
||||||
|
$exportSession->close;
|
||||||
$self->session->output->print($message);
|
$self->session->output->print($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -322,6 +328,8 @@ sub exportAsHtml {
|
||||||
$returnCode = 0;
|
$returnCode = 0;
|
||||||
$message = $@;
|
$message = $@;
|
||||||
$self->session->output->print("could not export asset with URL " . $asset->getUrl . ": $@");
|
$self->session->output->print("could not export asset with URL " . $asset->getUrl . ": $@");
|
||||||
|
$exportSession->var->end;
|
||||||
|
$exportSession->close;
|
||||||
return ($returnCode, $message);
|
return ($returnCode, $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -332,6 +340,8 @@ sub exportAsHtml {
|
||||||
$returnCode = 0;
|
$returnCode = 0;
|
||||||
$message = $@;
|
$message = $@;
|
||||||
$self->session->output->print("failed to export asset collateral for URL " . $asset->getUrl . ": $@");
|
$self->session->output->print("failed to export asset collateral for URL " . $asset->getUrl . ": $@");
|
||||||
|
$exportSession->var->end;
|
||||||
|
$exportSession->close;
|
||||||
return ($returnCode, $message);
|
return ($returnCode, $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package WebGUI::Content::AssetManager;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
use JSON qw( decode_json encode_json );
|
use JSON qw( from_json to_json );
|
||||||
use URI;
|
use URI;
|
||||||
use WebGUI::Form;
|
use WebGUI::Form;
|
||||||
use WebGUI::Paginator;
|
use WebGUI::Paginator;
|
||||||
|
|
@ -221,7 +221,7 @@ sub getMoreMenu {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return encode_json \@more_fields;
|
return to_json \@more_fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -309,7 +309,7 @@ sub www_ajaxGetManagerPage {
|
||||||
|
|
||||||
$session->http->setMimeType( 'application/json' );
|
$session->http->setMimeType( 'application/json' );
|
||||||
|
|
||||||
return encode_json( $assetInfo );
|
return to_json( $assetInfo );
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -454,7 +454,7 @@ a:visited { color: '.$form->get("visitedLinkColor").'; }
|
||||||
description => $i18n->get("We welcome your feedback."),
|
description => $i18n->get("We welcome your feedback."),
|
||||||
acknowledgement => $i18n->get("Thanks for for your interest in ^c;. We will review your message shortly."),
|
acknowledgement => $i18n->get("Thanks for for your interest in ^c;. We will review your message shortly."),
|
||||||
mailData => 1,
|
mailData => 1,
|
||||||
fieldConfiguration => JSON::encode_json(\@fieldConfig),
|
fieldConfiguration => JSON::to_json(\@fieldConfig),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ our $HELP = {
|
||||||
'variables' => [
|
'variables' => [
|
||||||
{ 'name' => 'title' },
|
{ 'name' => 'title' },
|
||||||
{ 'name' => 'link' },
|
{ 'name' => 'link' },
|
||||||
|
{ 'name' => 'date' },
|
||||||
{ 'name' => 'category' },
|
{ 'name' => 'category' },
|
||||||
{ 'name' => 'author' },
|
{ 'name' => 'author' },
|
||||||
{ 'name' => 'guid' },
|
{ 'name' => 'guid' },
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,8 @@ sub generateCloud {
|
||||||
|
|
||||||
=head2 getKeywordsForAsset ( { asset => $asset } )
|
=head2 getKeywordsForAsset ( { asset => $asset } )
|
||||||
|
|
||||||
Returns a string of keywords separated by spaces.
|
Returns a string of keywords separated by spaces. If the keyword has spaces in it, it
|
||||||
|
will be quoted.
|
||||||
|
|
||||||
=head3 asset
|
=head3 asset
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ sub www_spectreGetSiteData {
|
||||||
my $cookieName = $session->config->getCookieName;
|
my $cookieName = $session->config->getCookieName;
|
||||||
my @instances = ();
|
my @instances = ();
|
||||||
foreach my $instance (@{WebGUI::Workflow::Instance->getAllInstances($session)}) {
|
foreach my $instance (@{WebGUI::Workflow::Instance->getAllInstances($session)}) {
|
||||||
next unless $instance->getWorkflow->get("enabled");
|
next unless $instance->getWorkflow && $instance->getWorkflow->get("enabled");
|
||||||
push(@instances, {
|
push(@instances, {
|
||||||
instanceId => $instance->getId,
|
instanceId => $instance->getId,
|
||||||
priority => $instance->get("priority"),
|
priority => $instance->get("priority"),
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ sub www_demoteWorkflowActivity {
|
||||||
|
|
||||||
=head2 www_editWorkflow ( session, workflow )
|
=head2 www_editWorkflow ( session, workflow )
|
||||||
|
|
||||||
Displays displays the editable properties of a workflow.
|
Displays the editable properties of a workflow.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,6 @@ back up to the top.
|
||||||
|
|
||||||
The class of the new PayDriver object to create.
|
The class of the new PayDriver object to create.
|
||||||
|
|
||||||
=head4 $label
|
|
||||||
|
|
||||||
The label for this instance.
|
|
||||||
|
|
||||||
=head4 $options
|
=head4 $options
|
||||||
|
|
||||||
A list of properties to assign to this PayDriver. See C<definition> for details.
|
A list of properties to assign to this PayDriver. See C<definition> for details.
|
||||||
|
|
@ -55,17 +51,14 @@ A list of properties to assign to this PayDriver. See C<definition> for details
|
||||||
sub addPaymentGateway {
|
sub addPaymentGateway {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $requestedClass = shift;
|
my $requestedClass = shift;
|
||||||
my $label = shift;
|
|
||||||
my $options = shift;
|
my $options = shift;
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{Must provide a class to create an object})
|
WebGUI::Error::InvalidParam->throw(error => q{Must provide a class to create an object})
|
||||||
unless defined $requestedClass;
|
unless defined $requestedClass;
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{The requested class is not enabled in your WebGUI configuration file}, param => $requestedClass)
|
WebGUI::Error::InvalidParam->throw(error => q{The requested class is not enabled in your WebGUI configuration file}, param => $requestedClass)
|
||||||
unless isIn($requestedClass, (keys %{$self->getDrivers}) );
|
unless isIn($requestedClass, (keys %{$self->getDrivers}) );
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{Must provide a label to create an object})
|
|
||||||
unless $label;
|
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{You must pass a hashref of options to create a new PayDriver object})
|
WebGUI::Error::InvalidParam->throw(error => q{You must pass a hashref of options to create a new PayDriver object})
|
||||||
unless defined($options) and ref $options eq 'HASH' and scalar keys %{ $options };
|
unless defined($options) and ref $options eq 'HASH' and scalar keys %{ $options };
|
||||||
my $driver = eval { WebGUI::Pluggable::instanciate($requestedClass, 'create', [ $self->session, $label, $options ]) };
|
my $driver = eval { WebGUI::Pluggable::instanciate($requestedClass, 'create', [ $self->session, $options ]) };
|
||||||
|
|
||||||
return $driver;
|
return $driver;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ readonly session => my %session;
|
||||||
readonly className => my %className;
|
readonly className => my %className;
|
||||||
readonly paymentGatewayId => my %paymentGatewayId;
|
readonly paymentGatewayId => my %paymentGatewayId;
|
||||||
readonly options => my %options;
|
readonly options => my %options;
|
||||||
readonly label => my %label;
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -49,7 +48,7 @@ Private method used to build objects, shared by new and create.
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub _buildObj {
|
sub _buildObj {
|
||||||
my ($class, $session, $requestedClass, $paymentGatewayId, $label, $options) = @_;
|
my ($class, $session, $requestedClass, $paymentGatewayId, $options) = @_;
|
||||||
my $self = {};
|
my $self = {};
|
||||||
bless $self, $requestedClass;
|
bless $self, $requestedClass;
|
||||||
register $self;
|
register $self;
|
||||||
|
|
@ -57,10 +56,9 @@ sub _buildObj {
|
||||||
my $id = id $self;
|
my $id = id $self;
|
||||||
|
|
||||||
$session{ $id } = $session;
|
$session{ $id } = $session;
|
||||||
$paymentGatewayId{ $id } = $paymentGatewayId;
|
|
||||||
$label{ $id } = $label;
|
|
||||||
$options{ $id } = $options;
|
$options{ $id } = $options;
|
||||||
$className{ $id } = $requestedClass;
|
$className{ $id } = $requestedClass;
|
||||||
|
$paymentGatewayId{ $id } = $paymentGatewayId;
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
|
@ -137,7 +135,7 @@ to do calculations.
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 create ( $session, $label, $options )
|
=head2 create ( $session, $options )
|
||||||
|
|
||||||
Constructor for new WebGUI::Shop::PayDriver objects. Returns a WebGUI::Shop::PayDriver object.
|
Constructor for new WebGUI::Shop::PayDriver objects. Returns a WebGUI::Shop::PayDriver object.
|
||||||
To access driver objects that have already been configured, use C<new>.
|
To access driver objects that have already been configured, use C<new>.
|
||||||
|
|
@ -146,10 +144,6 @@ To access driver objects that have already been configured, use C<new>.
|
||||||
|
|
||||||
A WebGUI::Session object.
|
A WebGUI::Session object.
|
||||||
|
|
||||||
=head4 $label
|
|
||||||
|
|
||||||
A human readable label for this payment.
|
|
||||||
|
|
||||||
=head4 $options
|
=head4 $options
|
||||||
|
|
||||||
A list of properties to assign to this PayDriver. See C<definition> for details.
|
A list of properties to assign to this PayDriver. See C<definition> for details.
|
||||||
|
|
@ -161,23 +155,21 @@ sub create {
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{Must provide a session variable})
|
WebGUI::Error::InvalidParam->throw(error => q{Must provide a session variable})
|
||||||
unless ref $session eq 'WebGUI::Session';
|
unless ref $session eq 'WebGUI::Session';
|
||||||
my $label = shift;
|
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{Must provide a human readable label in the hashref of options})
|
|
||||||
unless $label;
|
|
||||||
my $options = shift;
|
my $options = shift;
|
||||||
WebGUI::Error::InvalidParam->throw(error => q{Must provide a hashref of options})
|
WebGUI::Error::InvalidParam->throw(error => q{Must provide a hashref of options})
|
||||||
unless ref $options eq 'HASH' and scalar keys %{ $options };
|
unless ref $options eq 'HASH' and scalar keys %{ $options };
|
||||||
|
WebGUI::Error::InvalidParam->throw(error => q{Must provide a human readable label in the hashref of options})
|
||||||
|
unless exists $options->{label} && $options->{label};
|
||||||
|
|
||||||
# Generate a unique id for this payment
|
# Generate a unique id for this payment
|
||||||
my $paymentGatewayId = $session->id->generate;
|
my $paymentGatewayId = $session->id->generate;
|
||||||
|
|
||||||
# Build object
|
# Build object
|
||||||
my $self = WebGUI::Shop::PayDriver->_buildObj($session, $class, $paymentGatewayId, $label, $options);
|
my $self = WebGUI::Shop::PayDriver->_buildObj($session, $class, $paymentGatewayId, $options);
|
||||||
|
|
||||||
# and persist this instance in the db
|
# and persist this instance in the db
|
||||||
$session->db->write('insert into paymentGateway (paymentGatewayId, label, className) VALUES (?,?,?)', [
|
$session->db->write('insert into paymentGateway (paymentGatewayId, className) VALUES (?,?)', [
|
||||||
$paymentGatewayId,
|
$paymentGatewayId,
|
||||||
$label,
|
|
||||||
$class,
|
$class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -550,7 +542,7 @@ sub new {
|
||||||
|
|
||||||
my $options = from_json($properties->{options});
|
my $options = from_json($properties->{options});
|
||||||
|
|
||||||
my $self = WebGUI::Shop::PayDriver->_buildObj($session, $class, $paymentGatewayId, $properties->{ label }, $options);
|
my $self = WebGUI::Shop::PayDriver->_buildObj($session, $class, $paymentGatewayId, $options);
|
||||||
|
|
||||||
return $self;
|
return $self;
|
||||||
}
|
}
|
||||||
|
|
@ -600,7 +592,7 @@ sub processPropertiesFromFormPost {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$properties{title} = $fullDefinition->[0]{name} if ($properties{title} eq "" || lc($properties{title}) eq "untitled");
|
$properties{label} = $fullDefinition->[0]{name} if ($properties{label} eq "" || lc($properties{label}) eq "untitled");
|
||||||
$self->update(\%properties);
|
$self->update(\%properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ sub get {
|
||||||
$opts = {};
|
$opts = {};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$opts = decode_json($opts);
|
$opts = JSON::from_json($opts);
|
||||||
}
|
}
|
||||||
if (defined $param) {
|
if (defined $param) {
|
||||||
return $opts->{$param};
|
return $opts->{$param};
|
||||||
|
|
@ -303,7 +303,7 @@ sub update {
|
||||||
my $options = shift || {};
|
my $options = shift || {};
|
||||||
WebGUI::Error::InvalidParam->throw(error => 'update was not sent a hashref of options to store in the database')
|
WebGUI::Error::InvalidParam->throw(error => 'update was not sent a hashref of options to store in the database')
|
||||||
unless ref $options eq 'HASH' and scalar keys %{ $options };
|
unless ref $options eq 'HASH' and scalar keys %{ $options };
|
||||||
my $jsonOptions = encode_json($options);
|
my $jsonOptions = JSON::to_json($options);
|
||||||
$options{id $self} = $jsonOptions;
|
$options{id $self} = $jsonOptions;
|
||||||
$self->session->db->write('update shipper set options=? where shipperId=?', [$jsonOptions, $self->getId]);
|
$self->session->db->write('update shipper set options=? where shipperId=?', [$jsonOptions, $self->getId]);
|
||||||
return undef;
|
return undef;
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ sub execute {
|
||||||
if ($belowThreshold) {
|
if ($belowThreshold) {
|
||||||
my $inbox = WebGUI::Inbox->new($self->session);
|
my $inbox = WebGUI::Inbox->new($self->session);
|
||||||
$inbox->addMessage({
|
$inbox->addMessage({
|
||||||
status => 'completed',
|
status => 'unread',
|
||||||
subject => $self->get('subject'),
|
subject => $self->get('subject'),
|
||||||
groupId => $self->get('toGroup'),
|
groupId => $self->get('toGroup'),
|
||||||
message => $message,
|
message => $message,
|
||||||
|
|
|
||||||
|
|
@ -725,8 +725,8 @@ our $I18N = {
|
||||||
},
|
},
|
||||||
|
|
||||||
'imageDensity description' => {
|
'imageDensity description' => {
|
||||||
message => q{The density of the image. Print-quality images are more than three times the size of web-quality images.},
|
message => q{The density of the image. Print-quality images are more than three times the resolution of web-quality images.},
|
||||||
lastUpdated => 0,
|
lastUpdated => 1231764657,
|
||||||
context => q{Description of asset property},
|
context => q{Description of asset property},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -331,8 +331,8 @@ it would be best to make sure the names are the same.|,
|
||||||
},
|
},
|
||||||
|
|
||||||
'CATEGORY_NAME_loop' => {
|
'CATEGORY_NAME_loop' => {
|
||||||
message => q|A loop containting attributes and values for those attributes is created for each category in this matrix. The name of the loop is the category name with spaces replaced with hyphens and a _loop added to the end. So if you have a category called "Bells and Whistles" then the loop would be called "bells-and-whistles_loop".|,
|
message => q|A loop containing attributes, and values for those attributes, is created for each category in this matrix. The name of the loop is the category name with spaces replaced with hyphens and a _loop added to the end. So if you have a category called "Bells and Whistles" then the loop would be called "bells-and-whistles_loop".|,
|
||||||
lastUpdated => 0,
|
lastUpdated => 1231764520,
|
||||||
context => q|Description of the CATEGORY_NAME_loop tmpl_var for the template help.|,
|
context => q|Description of the CATEGORY_NAME_loop tmpl_var for the template help.|,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,11 @@ our $I18N = {
|
||||||
lastUpdated => 0,
|
lastUpdated => 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'date' => {
|
||||||
|
message => q|The publication date for this item.|,
|
||||||
|
lastUpdated => 0,
|
||||||
|
},
|
||||||
|
|
||||||
'author' => {
|
'author' => {
|
||||||
message => q|The publisher of this item.|,
|
message => q|The publisher of this item.|,
|
||||||
lastUpdated => 0,
|
lastUpdated => 0,
|
||||||
|
|
|
||||||
0
sbin/changeIobStatus.pl
Normal file → Executable file
0
sbin/changeIobStatus.pl
Normal file → Executable file
0
sbin/diskUsage.pl
Normal file → Executable file
0
sbin/diskUsage.pl
Normal file → Executable file
0
sbin/fileImport.pl
Normal file → Executable file
0
sbin/fileImport.pl
Normal file → Executable file
0
sbin/galleryImport.pl
Normal file → Executable file
0
sbin/galleryImport.pl
Normal file → Executable file
0
sbin/generateContent.pl
Normal file → Executable file
0
sbin/generateContent.pl
Normal file → Executable file
10
sbin/installClass.pl
Normal file → Executable file
10
sbin/installClass.pl
Normal file → Executable file
|
|
@ -1,6 +1,16 @@
|
||||||
#!/usr/bin/env perl
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2008 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
use lib "../lib";
|
use lib "../lib";
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
|
|
||||||
0
sbin/maintenanceMode.pl
Normal file → Executable file
0
sbin/maintenanceMode.pl
Normal file → Executable file
0
sbin/purgeWGAccess.pl
Normal file → Executable file
0
sbin/purgeWGAccess.pl
Normal file → Executable file
0
sbin/rebuildLineage.pl
Normal file → Executable file
0
sbin/rebuildLineage.pl
Normal file → Executable file
0
sbin/search.pl
Normal file → Executable file
0
sbin/search.pl
Normal file → Executable file
0
sbin/spectre.pl
Normal file → Executable file
0
sbin/spectre.pl
Normal file → Executable file
0
sbin/testCodebase.pl
Normal file → Executable file
0
sbin/testCodebase.pl
Normal file → Executable file
0
sbin/testEnvironment.pl
Normal file → Executable file
0
sbin/testEnvironment.pl
Normal file → Executable file
0
sbin/thumbnailer.pl
Normal file → Executable file
0
sbin/thumbnailer.pl
Normal file → Executable file
0
sbin/upgrade.pl
Normal file → Executable file
0
sbin/upgrade.pl
Normal file → Executable file
0
sbin/userImport.pl
Normal file → Executable file
0
sbin/userImport.pl
Normal file → Executable file
|
|
@ -16,7 +16,7 @@ use lib "$FindBin::Bin/../lib";
|
||||||
|
|
||||||
use WebGUI::Test;
|
use WebGUI::Test;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use Test::More tests => 14; # increment this value for each test you create
|
use Test::More tests => 15; # increment this value for each test you create
|
||||||
use WebGUI::Asset::Snippet;
|
use WebGUI::Asset::Snippet;
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
@ -70,6 +70,24 @@ isnt ($wwwViewOutput, undef, 'www_view returns something');
|
||||||
my $editOutput = $snippet->www_edit;
|
my $editOutput = $snippet->www_edit;
|
||||||
isnt ($editOutput, undef, 'www_edit returns something');
|
isnt ($editOutput, undef, 'www_edit returns something');
|
||||||
|
|
||||||
|
$snippet->update({
|
||||||
|
title => "authMethod",
|
||||||
|
processAsTemplate => 1,
|
||||||
|
cacheTimeout => 1,
|
||||||
|
snippet => q|^SQL(select value from settings where name="<tmpl_var title>");|
|
||||||
|
});
|
||||||
|
|
||||||
|
my $sqlMacroAdded = exists $session->config->get('macros')->{'SQL'};
|
||||||
|
if (! $sqlMacroAdded) {
|
||||||
|
$session->config->addToHash('macros', 'SQL', 'SQL');
|
||||||
|
}
|
||||||
|
|
||||||
|
is($snippet->view(), 'WebGUI', 'Interpolating macros in works with template in the correct order');
|
||||||
|
|
||||||
|
if (! $sqlMacroAdded) {
|
||||||
|
$session->config->deleteFromHash('macros', 'SQL');
|
||||||
|
}
|
||||||
|
|
||||||
TODO: {
|
TODO: {
|
||||||
local $TODO = "Tests to make later";
|
local $TODO = "Tests to make later";
|
||||||
ok(0, 'Test indexContent method');
|
ok(0, 'Test indexContent method');
|
||||||
|
|
|
||||||
23
t/Shop/Pay.t
23
t/Shop/Pay.t
|
|
@ -33,7 +33,7 @@ my $session = WebGUI::Test->session;
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Tests
|
# Tests
|
||||||
|
|
||||||
my $tests = 19;
|
my $tests = 18;
|
||||||
plan tests => 1 + $tests;
|
plan tests => 1 + $tests;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -106,15 +106,6 @@ throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDrive
|
||||||
'addPaymentGateway croaks without a configured class',
|
'addPaymentGateway croaks without a configured class',
|
||||||
);
|
);
|
||||||
|
|
||||||
throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash'); },
|
|
||||||
'WebGUI::Error::InvalidParam',
|
|
||||||
{
|
|
||||||
error => 'Must provide a label to create an object',
|
|
||||||
},
|
|
||||||
'addPaymentGateway requires a label',
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', 'JAL'); },
|
throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', 'JAL'); },
|
||||||
'WebGUI::Error::InvalidParam',
|
'WebGUI::Error::InvalidParam',
|
||||||
{
|
{
|
||||||
|
|
@ -123,7 +114,7 @@ throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDrive
|
||||||
'addPaymentGateway croaks without options to build a object with',
|
'addPaymentGateway croaks without options to build a object with',
|
||||||
);
|
);
|
||||||
|
|
||||||
throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', 'JAL', {}); },
|
throws_deeply ( sub { $gateway = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', {}); },
|
||||||
'WebGUI::Error::InvalidParam',
|
'WebGUI::Error::InvalidParam',
|
||||||
{
|
{
|
||||||
error => 'You must pass a hashref of options to create a new PayDriver object',
|
error => 'You must pass a hashref of options to create a new PayDriver object',
|
||||||
|
|
@ -135,9 +126,9 @@ my $options = {
|
||||||
enabled => 1,
|
enabled => 1,
|
||||||
label => 'Cold, stone hard cash',
|
label => 'Cold, stone hard cash',
|
||||||
};
|
};
|
||||||
$newDriver = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', 'JAL', $options);
|
$newDriver = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', $options);
|
||||||
isa_ok($newDriver, 'WebGUI::Shop::PayDriver::Cash', 'added a new, configured Cash driver');
|
isa_ok($newDriver, 'WebGUI::Shop::PayDriver::Cash', 'added a new, configured Cash driver');
|
||||||
is($newDriver->label, 'JAL', 'label passed correctly to paydriver');
|
is($newDriver->get('label'), 'Cold, stone hard cash', 'label passed correctly to paydriver');
|
||||||
|
|
||||||
|
|
||||||
#TODO: check if options are stored.
|
#TODO: check if options are stored.
|
||||||
|
|
@ -212,14 +203,14 @@ my $otherOptions = {
|
||||||
enabled => 1,
|
enabled => 1,
|
||||||
label => 'Even harder cash',
|
label => 'Even harder cash',
|
||||||
};
|
};
|
||||||
$anotherDriver = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', 'Pomade', $otherOptions);
|
$anotherDriver = $pay->addPaymentGateway('WebGUI::Shop::PayDriver::Cash', $otherOptions);
|
||||||
|
|
||||||
my $gateways = $pay->getPaymentGateways;
|
my $gateways = $pay->getPaymentGateways;
|
||||||
my @returnedIds = map {$_->label} @{ $gateways };
|
my @returnedIds = map {$_->get('label')} @{ $gateways };
|
||||||
cmp_bag(
|
cmp_bag(
|
||||||
\@returnedIds,
|
\@returnedIds,
|
||||||
[
|
[
|
||||||
qw/Cash ITransact Pomade JAL/
|
qw/Cash ITransact/, 'Even harder cash', 'Cold, stone hard cash',
|
||||||
],
|
],
|
||||||
'getPaymentGateways returns all create payment drivers',
|
'getPaymentGateways returns all create payment drivers',
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ my $session = WebGUI::Test->session;
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Tests
|
# Tests
|
||||||
|
|
||||||
my $tests = 49;
|
my $tests = 46;
|
||||||
plan tests => 1 + $tests;
|
plan tests => 1 + $tests;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -150,31 +150,9 @@ cmp_deeply (
|
||||||
'create takes exception to not giving it a session object',
|
'create takes exception to not giving it a session object',
|
||||||
);
|
);
|
||||||
|
|
||||||
eval { $driver = WebGUI::Shop::PayDriver->create($session); };
|
eval { $driver = WebGUI::Shop::PayDriver->create($session, {}); };
|
||||||
$e = Exception::Class->caught();
|
$e = Exception::Class->caught();
|
||||||
isa_ok ($e, 'WebGUI::Error::InvalidParam', 'create takes exception to not giving it a label');
|
isa_ok ($e, 'WebGUI::Error::InvalidParam', 'create takes exception to giving it an empty hashref of options');
|
||||||
cmp_deeply (
|
|
||||||
$e,
|
|
||||||
methods(
|
|
||||||
error => 'Must provide a human readable label in the hashref of options',
|
|
||||||
),
|
|
||||||
'create takes exception to not giving it a hashref of options',
|
|
||||||
);
|
|
||||||
|
|
||||||
eval { $driver = WebGUI::Shop::PayDriver->create($session, 'Very human readable label'); };
|
|
||||||
$e = Exception::Class->caught();
|
|
||||||
isa_ok ($e, 'WebGUI::Error::InvalidParam', 'create takes exception to not giving it a hashref of options');
|
|
||||||
cmp_deeply (
|
|
||||||
$e,
|
|
||||||
methods(
|
|
||||||
error => 'Must provide a hashref of options',
|
|
||||||
),
|
|
||||||
'create takes exception to not giving it a hashref of options',
|
|
||||||
);
|
|
||||||
|
|
||||||
eval { $driver = WebGUI::Shop::PayDriver->create($session, 'Very human readable label', {}); };
|
|
||||||
$e = Exception::Class->caught();
|
|
||||||
isa_ok ($e, 'WebGUI::Error::InvalidParam', 'create takes exception to not giving it an empty hashref of options');
|
|
||||||
cmp_deeply (
|
cmp_deeply (
|
||||||
$e,
|
$e,
|
||||||
methods(
|
methods(
|
||||||
|
|
@ -185,7 +163,6 @@ cmp_deeply (
|
||||||
|
|
||||||
# Test functionality
|
# Test functionality
|
||||||
|
|
||||||
my $label = 'Human Readable Label';
|
|
||||||
my $options = {
|
my $options = {
|
||||||
label => 'Fast and harmless',
|
label => 'Fast and harmless',
|
||||||
enabled => 1,
|
enabled => 1,
|
||||||
|
|
@ -193,19 +170,18 @@ my $options = {
|
||||||
receiptMessage => 'Pannenkoeken zijn nog lekkerder met spek',
|
receiptMessage => 'Pannenkoeken zijn nog lekkerder met spek',
|
||||||
};
|
};
|
||||||
|
|
||||||
$driver = WebGUI::Shop::PayDriver->create( $session, $label, $options );
|
$driver = WebGUI::Shop::PayDriver->create( $session, $options );
|
||||||
|
|
||||||
isa_ok ($driver, 'WebGUI::Shop::PayDriver', 'create creates WebGUI::Shop::PayDriver object');
|
isa_ok ($driver, 'WebGUI::Shop::PayDriver', 'create creates WebGUI::Shop::PayDriver object');
|
||||||
|
like($driver->getId, $session->id->getValidator, 'driver id is a valid GUID');
|
||||||
|
|
||||||
my $dbData = $session->db->quickHashRef('select * from paymentGateway where paymentGatewayId=?', [ $driver->getId ]);
|
my $dbData = $session->db->quickHashRef('select * from paymentGateway where paymentGatewayId=?', [ $driver->getId ]);
|
||||||
|
|
||||||
#diag ($driver->getId);
|
|
||||||
cmp_deeply (
|
cmp_deeply (
|
||||||
$dbData,
|
$dbData,
|
||||||
{
|
{
|
||||||
paymentGatewayId => $driver->getId,
|
paymentGatewayId => $driver->getId,
|
||||||
className => ref $driver,
|
className => ref $driver,
|
||||||
label => $driver->label,
|
|
||||||
options => q|{"group":3,"receiptMessage":"Pannenkoeken zijn nog lekkerder met spek","label":"Fast and harmless","enabled":1}|,
|
options => q|{"group":3,"receiptMessage":"Pannenkoeken zijn nog lekkerder met spek","label":"Fast and harmless","enabled":1}|,
|
||||||
},
|
},
|
||||||
'Correct data written to the db',
|
'Correct data written to the db',
|
||||||
|
|
@ -213,7 +189,6 @@ cmp_deeply (
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
#
|
#
|
||||||
# session
|
# session
|
||||||
|
|
|
||||||
|
|
@ -378,10 +378,6 @@ ul.topTabs li {
|
||||||
margin:0px;
|
margin:0px;
|
||||||
padding:0px;
|
padding:0px;
|
||||||
list-style-type:none;
|
list-style-type:none;
|
||||||
position:relative;zoom:1;
|
|
||||||
width:auto;
|
|
||||||
|
|
||||||
Xposition:relative;
|
|
||||||
}
|
}
|
||||||
ul.topTabs li {
|
ul.topTabs li {
|
||||||
display:block;
|
display:block;
|
||||||
|
|
|
||||||
3
www/extras/account/print.css
Normal file
3
www/extras/account/print.css
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#ALUM_wrapper #topBar, #ALUM_wrapper #ALUM_doc, #ALUM_wrapper #sddm, #ALUM_wrapper #ALUM_footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
@ -1,458 +0,0 @@
|
||||||
//Confugration
|
|
||||||
//sets the drag accruacy
|
|
||||||
//a value of 0 is most accurate. The number can be raised to improve performance.
|
|
||||||
var accuracy = 2;
|
|
||||||
|
|
||||||
//list of the content item names. Could be searched for, but hard coded for performance
|
|
||||||
var draggableObjectList=new Array();
|
|
||||||
var dragableList=new Array();
|
|
||||||
//Internal Config (Do not Edit)
|
|
||||||
|
|
||||||
//browser check
|
|
||||||
var dom=document.getElementById&&!document.all
|
|
||||||
var docElement = document.documentElement;
|
|
||||||
var pageURL = "";
|
|
||||||
var dragging=false;
|
|
||||||
var z,x,y
|
|
||||||
var accuracyCount =0;
|
|
||||||
var startTD = null;
|
|
||||||
var endTD = null;
|
|
||||||
var topelement=dom? "HTML" : "BODY"
|
|
||||||
var currentDiv = null;
|
|
||||||
var clipboard = null;
|
|
||||||
var contra = "";
|
|
||||||
var pageHeight=0;
|
|
||||||
var pageWidth=0;
|
|
||||||
var scrollJump=50;
|
|
||||||
var blankCount=1;
|
|
||||||
var draggableListOrigClassNames = []; // make sure that we're preserving the locked-asset class, if present
|
|
||||||
|
|
||||||
//checks the key Events for copy and paste operations
|
|
||||||
//ctrlC ctrlV shiftP shiftY
|
|
||||||
function dragable_checkKeyEvent(e) {
|
|
||||||
e=dom? e : event;
|
|
||||||
|
|
||||||
if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode==37 || e.keyCode==39 || e.keyCode == 66 || e.keyCode == 65){
|
|
||||||
contra+=e.keyCode;
|
|
||||||
if (contra.indexOf("38403840373937396665") != -1) {
|
|
||||||
alert("WebGUI was created by Plain Black Corporation");
|
|
||||||
contra="";
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
contra = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentDiv == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((e.keyCode == 67 && e.ctrlKey) || (e.keyCode==89 && e.shiftKey)) {
|
|
||||||
clipboard=currentDiv;
|
|
||||||
return;
|
|
||||||
}else if ((e.keyCode == 86 && e.ctrlKey) || (e.keyCode==80 && e.shiftKey)) {
|
|
||||||
if (clipboard != currentDiv && !dragable_isBlank(clipboard)) {
|
|
||||||
dragable_moveContent(clipboard,currentDiv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//goes up the parent tree until class is found. If not found, returns null
|
|
||||||
function dragable_getObjectByClass(target,clazz) {
|
|
||||||
var classMatch = new RegExp("\\b" + clazz + "\\b");
|
|
||||||
while (target.tagName!=topelement && target.className.search(classMatch) == -1){
|
|
||||||
target=dom? target.parentNode : target.parentElement
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.className.search(classMatch) != -1){
|
|
||||||
return target;
|
|
||||||
}else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//checks to see if the scroll bars need to be adjusted
|
|
||||||
function dragable_adjustScrollBars(e) {
|
|
||||||
|
|
||||||
scrY=0;
|
|
||||||
scrX=0;
|
|
||||||
|
|
||||||
if (e.clientY > docElement.clientHeight-scrollJump) {
|
|
||||||
if (e.clientY + docElement.scrollTop < pageHeight - (scrollJump + 60)) {
|
|
||||||
scrY=scrollJump;
|
|
||||||
window.scroll(docElement.scrollLeft,docElement.scrollTop + scrY);
|
|
||||||
y-=scrY;
|
|
||||||
}
|
|
||||||
}else if (e.clientY < scrollJump) {
|
|
||||||
if (docElement.scrollTop < scrollJump) {
|
|
||||||
scrY = docElement.scrollTop;
|
|
||||||
}else {
|
|
||||||
scrY=scrollJump;
|
|
||||||
}
|
|
||||||
window.scroll(docElement.scrollLeft,docElement.scrollTop - scrY);
|
|
||||||
y+=scrY;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (e.clientX > docElement.clientWidth-scrollJump) {
|
|
||||||
if (e.clientX + docElement.scrollLeft < pageWidth - (scrollJump + 60)) {
|
|
||||||
scrX=scrollJump;
|
|
||||||
window.scroll(docElement.scrollLeft + scrX,docElement.scrollTop);
|
|
||||||
x-=scrX;
|
|
||||||
}
|
|
||||||
}else if (e.clientX < scrollJump) {
|
|
||||||
if (docElement.scrollLeft < scrollJump) {
|
|
||||||
scrX = docElement.scrollLeft;
|
|
||||||
}else {
|
|
||||||
scrX=scrollJump;
|
|
||||||
}
|
|
||||||
window.scroll(docElement.scrollLeft - scrX,docElement.scrollTop);
|
|
||||||
x+=scrX;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//initialization routine, must be called on load. Sets up event handlers
|
|
||||||
function dragable_init(url) {
|
|
||||||
|
|
||||||
docElement = document.documentElement;
|
|
||||||
|
|
||||||
if (document.compatMode == "BackCompat") {
|
|
||||||
docElement = document.body;
|
|
||||||
}
|
|
||||||
|
|
||||||
pageURL = url;
|
|
||||||
//window.scroll(10,500);
|
|
||||||
//set up event handlers
|
|
||||||
document.onmouseup=dragable_dragStop;
|
|
||||||
document.onkeydown=dragable_checkKeyEvent;
|
|
||||||
document.onmousemove=dragable_move;
|
|
||||||
|
|
||||||
//fill the draggableObject list
|
|
||||||
obj = document.getElementById("position1");
|
|
||||||
contentCount=2;
|
|
||||||
while (obj != null) {
|
|
||||||
tbody = dragable_getElementChildren(obj);
|
|
||||||
children = dragable_getElementChildren(tbody[0]);
|
|
||||||
|
|
||||||
if (children.length == 0) {
|
|
||||||
//stick in a blank
|
|
||||||
dragable_appendBlankRow(tbody[0]);
|
|
||||||
}else {
|
|
||||||
for (i = 0; i< children.length;i++) {
|
|
||||||
draggableObjectList[draggableObjectList.length] = children[i];
|
|
||||||
dragableList[dragableList.length]=document.getElementById(children[i].id + "_div");
|
|
||||||
draggableListOrigClassNames[draggableListOrigClassNames.length] = dragableList[dragableList.length - 1].className;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
obj = document.getElementById("position" + contentCount);
|
|
||||||
contentCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0;i<draggableObjectList.length;i++) {
|
|
||||||
eval("document.getElementById('" + draggableObjectList[i].id + "').onmousedown=dragable_dragStart");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//called on mouse move.
|
|
||||||
function dragable_move(e){
|
|
||||||
e=dom? e : event;
|
|
||||||
|
|
||||||
if (dragging){
|
|
||||||
if (accuracyCount==accuracy) {
|
|
||||||
tmp = dragable_spy(dom? e.pageX: (e.clientX + docElement.scrollLeft),dom? e.pageY: (e.clientY + docElement.scrollTop));
|
|
||||||
if (tmp.length != 0) {
|
|
||||||
dragable_dragOver(tmp[0],tmp[1]);
|
|
||||||
}else {
|
|
||||||
//only occurs if not found
|
|
||||||
|
|
||||||
if (endTD != null) {
|
|
||||||
if (!dragable_isBlank(endTD)) {
|
|
||||||
document.getElementById(endTD.id + "_div").className="dragable";
|
|
||||||
}else {
|
|
||||||
endTD.className="blank";
|
|
||||||
}
|
|
||||||
endTDPos=null;
|
|
||||||
endTD=null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
accuracyCount=0;
|
|
||||||
}else {
|
|
||||||
accuracyCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
dragable_adjustScrollBars(e);
|
|
||||||
// alert('x is: '+ (temp1+e.clientX-x));
|
|
||||||
z.style.left=(temp1+e.clientX-x)+"px";
|
|
||||||
z.style.top=(temp2+e.clientY-y)+"px";
|
|
||||||
return false
|
|
||||||
}else {
|
|
||||||
|
|
||||||
tmp = dragable_spy(dom? e.pageX: (e.clientX + docElement.scrollLeft),dom? e.pageY: (e.clientY + docElement.scrollTop));
|
|
||||||
|
|
||||||
if (tmp.length == 0) {
|
|
||||||
currentDiv = null;
|
|
||||||
}else {
|
|
||||||
currentDiv = tmp[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragable_dragStart(e){
|
|
||||||
e=dom? e : event;
|
|
||||||
var fObj=dom? e.target : e.srcElement
|
|
||||||
|
|
||||||
if (fObj.className.search(/\bdragTrigger\b/) == -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fObj = dragable_getObjectByClass(fObj,"dragable");
|
|
||||||
|
|
||||||
if (fObj == null) return;
|
|
||||||
|
|
||||||
//set the start td
|
|
||||||
startTD=document.getElementById(fObj.id.substr(0,fObj.id.indexOf("_div")));
|
|
||||||
|
|
||||||
fObj.className="dragging";
|
|
||||||
|
|
||||||
//set the page height and width in a var since IE changes them when scrolling
|
|
||||||
pageHeight = docElement.scrollHeight;
|
|
||||||
pageWidth = docElement.scrollWidth;
|
|
||||||
|
|
||||||
dragging=true
|
|
||||||
z=fObj;
|
|
||||||
temp1=z.style.left;
|
|
||||||
temp1=temp1.replace(/px/g,'')+0;
|
|
||||||
temp1=parseInt(temp1);
|
|
||||||
temp2=z.style.top;
|
|
||||||
temp2=temp2.replace(/px/g,'')+0;
|
|
||||||
temp2=parseInt(temp2);
|
|
||||||
// alert(temp1,temp2);
|
|
||||||
x=e.clientX;
|
|
||||||
y=e.clientY;
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragable_isBlank(td) {
|
|
||||||
if (td.id.indexOf("blank") != -1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//returns an array. array[0] holds the tr object, and array[1] holds the position (top or bottom)
|
|
||||||
function dragable_spy(x, y) {
|
|
||||||
|
|
||||||
var returnArray = new Array();
|
|
||||||
for (i=0;i<draggableObjectList.length;i++) {
|
|
||||||
td = draggableObjectList[i];
|
|
||||||
|
|
||||||
//this is a hack
|
|
||||||
if (td == null || td == startTD) continue;
|
|
||||||
|
|
||||||
var fObj=td;
|
|
||||||
|
|
||||||
y1=0;
|
|
||||||
x1=0
|
|
||||||
|
|
||||||
while (fObj!=null && fObj.tagName!=topelement){
|
|
||||||
y1+=fObj.offsetTop;
|
|
||||||
x1+=fObj.offsetLeft;
|
|
||||||
fObj=fObj.offsetParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (x >x1 && x < (x1 + td.offsetWidth)) {
|
|
||||||
if (y> y1 && y< (y1 + (td.offsetHeight/2))) {
|
|
||||||
returnArray[0] = td;
|
|
||||||
returnArray[1] = "top";
|
|
||||||
return returnArray;
|
|
||||||
}else if (y> y1 && y< (y1 + td.offsetHeight)) {
|
|
||||||
returnArray[0] = td;
|
|
||||||
returnArray[1] = "bottom";
|
|
||||||
return returnArray;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return returnArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Called when a content item is dragged over
|
|
||||||
function dragable_dragOver(obj,position) {
|
|
||||||
|
|
||||||
if (endTD == obj && endTDPos == position ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(endTD != null && endTD != obj) {
|
|
||||||
if (dragable_isBlank(endTD)) {
|
|
||||||
document.getElementById(endTD.id).className="blank";
|
|
||||||
}else {
|
|
||||||
document.getElementById(endTD.id + "_div").className="dragable";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dragable_isBlank(obj)) {
|
|
||||||
divName = td.id;
|
|
||||||
}else {
|
|
||||||
divName = td.id + "_div";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dragable_isBlank(obj)) {
|
|
||||||
document.getElementById(divName).className="blankOver";
|
|
||||||
endTDPos=null;
|
|
||||||
}else if (position == "top") {
|
|
||||||
endTDPos=position;
|
|
||||||
document.getElementById(divName).className="draggedOverTop";
|
|
||||||
}else {
|
|
||||||
endTDPos=position;
|
|
||||||
document.getElementById(divName).className="draggedOverBottom";
|
|
||||||
}
|
|
||||||
|
|
||||||
endTD=obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
//called on mouse up, If an element is being dragged, this method does the right thing.
|
|
||||||
function dragable_dragStop(e) {
|
|
||||||
dragging=false;
|
|
||||||
if (z) {
|
|
||||||
|
|
||||||
if (endTD !=null && startTD!=null) {
|
|
||||||
dragable_moveContent(startTD,endTD,endTDPos);
|
|
||||||
startTD=null;
|
|
||||||
|
|
||||||
if (dragable_isBlank(endTD)) {
|
|
||||||
divName = endTD.id;
|
|
||||||
}else {
|
|
||||||
divName=endTD.id + "_div";
|
|
||||||
document.getElementById(divName).className="dragable";
|
|
||||||
}
|
|
||||||
var url = pageURL + dragable_getContentMap();
|
|
||||||
//window.alert(url);
|
|
||||||
document.getElementById("dragSubmitter").src = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i=0;i<dragableList.length;i++) {
|
|
||||||
dragableList[i].style.top=0+"px";
|
|
||||||
dragableList[i].style.left=0+"px";
|
|
||||||
dragableList[i].className = draggableListOrigClassNames[i];
|
|
||||||
// dragableList[i].className="dragable";
|
|
||||||
}
|
|
||||||
|
|
||||||
//this is a ie hack for a render bug
|
|
||||||
for(i=0;i<draggableObjectList.length;i++) {
|
|
||||||
if (draggableObjectList[i]) {
|
|
||||||
draggableObjectList[i].style.top=1+"px";
|
|
||||||
draggableObjectList[i].style.left=1+"px";
|
|
||||||
draggableObjectList[i].style.top=0+"px";
|
|
||||||
draggableObjectList[i].style.left=0+"px";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
startTD=null;
|
|
||||||
|
|
||||||
if (endTD != null) {
|
|
||||||
endTD.position = null;
|
|
||||||
endTD=null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//gets the element children of a dom object
|
|
||||||
function dragable_getElementChildren(obj) {
|
|
||||||
var myArray= new Array();
|
|
||||||
mycnt = 0;
|
|
||||||
for (i=0;i<obj.childNodes.length;i++) {
|
|
||||||
if (obj.childNodes[i].nodeType==1) {
|
|
||||||
myArray[mycnt] = obj.childNodes[i];
|
|
||||||
mycnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return myArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragable_appendBlankRow(parent) {
|
|
||||||
var blank = document.getElementById("blank");
|
|
||||||
blank.className="blank";
|
|
||||||
blankClone = blank.cloneNode(true);
|
|
||||||
blankClone.id = "blank" + new Date().getTime() + blankCount++;
|
|
||||||
draggableObjectList[draggableObjectList.length] = blankClone;
|
|
||||||
parent.appendChild(blankClone);
|
|
||||||
blankClone.style.top=0+"px";
|
|
||||||
blankClone.style.left=0+"px";
|
|
||||||
blank.className="hidden";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//moves a table row from one table to another. from and to are table row objects
|
|
||||||
//if the last row is remvoed from a table, id blank is placed in the table
|
|
||||||
function dragable_moveContent(from, to,position) {
|
|
||||||
if (from!=to && from && to) {
|
|
||||||
var fromParent = from.parentNode;
|
|
||||||
fromParent.removeChild(from);
|
|
||||||
|
|
||||||
if (dragable_getElementChildren(fromParent).length == 0) {
|
|
||||||
dragable_appendBlankRow(fromParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
var toParent = to.parentNode;
|
|
||||||
var toChildren = dragable_getElementChildren(toParent);
|
|
||||||
|
|
||||||
if (toChildren[0].id.indexOf("blank") != -1) {
|
|
||||||
toParent.removeChild(document.getElementById(toChildren[0].id));
|
|
||||||
toParent.appendChild(from);
|
|
||||||
}else if (position == "top"){
|
|
||||||
toParent.insertBefore( from, to );
|
|
||||||
}else {
|
|
||||||
children = dragable_getElementChildren(toParent);
|
|
||||||
i=0;
|
|
||||||
while(children[i] != to && i < children.length) {
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == children.length - 1) {
|
|
||||||
toParent.appendChild(from);
|
|
||||||
}else {
|
|
||||||
toParent.insertBefore(from,children[i+1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dragable_getContentMap() {
|
|
||||||
//ex 1001,2004;896,494,10010
|
|
||||||
|
|
||||||
contentMap = "";
|
|
||||||
contentCount=1;
|
|
||||||
var contentArea = document.getElementById("position1");
|
|
||||||
while (contentArea) {
|
|
||||||
if ((contentMap != "") || (contentArea.id == 'position2')) {
|
|
||||||
contentMap+=".";
|
|
||||||
}
|
|
||||||
|
|
||||||
//get down to the tr area
|
|
||||||
children = dragable_getElementChildren(contentArea);
|
|
||||||
children=dragable_getElementChildren(children[0]);
|
|
||||||
|
|
||||||
for (i=0;i<children.length;i++) {
|
|
||||||
if (contentMap != "" && (contentMap.lastIndexOf(".") != contentMap.length-1)) {
|
|
||||||
contentMap+=",";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (children[i].id.indexOf("blank") == -1) {
|
|
||||||
contentMap+=children[i].id.replace(/^td/,"");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
contentCount++;
|
|
||||||
contentArea = document.getElementById("position" + contentCount);
|
|
||||||
}
|
|
||||||
return contentMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,292 +0,0 @@
|
||||||
//v1.7
|
|
||||||
// Flash Player Version Detection
|
|
||||||
// Detect Client Browser type
|
|
||||||
// Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved.
|
|
||||||
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
|
|
||||||
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
|
|
||||||
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
|
|
||||||
|
|
||||||
function ControlVersion()
|
|
||||||
{
|
|
||||||
var version;
|
|
||||||
var axo;
|
|
||||||
var e;
|
|
||||||
|
|
||||||
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
|
|
||||||
|
|
||||||
try {
|
|
||||||
// version will be set for 7.X or greater players
|
|
||||||
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
|
|
||||||
version = axo.GetVariable("$version");
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!version)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// version will be set for 6.X players only
|
|
||||||
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
|
|
||||||
|
|
||||||
// installed player is some revision of 6.0
|
|
||||||
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
|
|
||||||
// so we have to be careful.
|
|
||||||
|
|
||||||
// default to the first public version
|
|
||||||
version = "WIN 6,0,21,0";
|
|
||||||
|
|
||||||
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
|
|
||||||
axo.AllowScriptAccess = "always";
|
|
||||||
|
|
||||||
// safe to call for 6.0r47 or greater
|
|
||||||
version = axo.GetVariable("$version");
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!version)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// version will be set for 4.X or 5.X player
|
|
||||||
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
|
||||||
version = axo.GetVariable("$version");
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!version)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// version will be set for 3.X player
|
|
||||||
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
|
||||||
version = "WIN 3,0,18,0";
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!version)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// version will be set for 2.X player
|
|
||||||
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
|
|
||||||
version = "WIN 2,0,0,11";
|
|
||||||
} catch (e) {
|
|
||||||
version = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
// JavaScript helper required to detect Flash Player PlugIn version information
|
|
||||||
function GetSwfVer(){
|
|
||||||
// NS/Opera version >= 3 check for Flash plugin in plugin array
|
|
||||||
var flashVer = -1;
|
|
||||||
|
|
||||||
if (navigator.plugins != null && navigator.plugins.length > 0) {
|
|
||||||
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
|
|
||||||
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
|
|
||||||
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
|
|
||||||
var descArray = flashDescription.split(" ");
|
|
||||||
var tempArrayMajor = descArray[2].split(".");
|
|
||||||
var versionMajor = tempArrayMajor[0];
|
|
||||||
var versionMinor = tempArrayMajor[1];
|
|
||||||
var versionRevision = descArray[3];
|
|
||||||
if (versionRevision == "") {
|
|
||||||
versionRevision = descArray[4];
|
|
||||||
}
|
|
||||||
if (versionRevision[0] == "d") {
|
|
||||||
versionRevision = versionRevision.substring(1);
|
|
||||||
} else if (versionRevision[0] == "r") {
|
|
||||||
versionRevision = versionRevision.substring(1);
|
|
||||||
if (versionRevision.indexOf("d") > 0) {
|
|
||||||
versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// MSN/WebTV 2.6 supports Flash 4
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
|
|
||||||
// WebTV 2.5 supports Flash 3
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
|
|
||||||
// older WebTV supports Flash 2
|
|
||||||
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
|
|
||||||
else if ( isIE && isWin && !isOpera ) {
|
|
||||||
flashVer = ControlVersion();
|
|
||||||
}
|
|
||||||
return flashVer;
|
|
||||||
}
|
|
||||||
|
|
||||||
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
|
|
||||||
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
|
|
||||||
{
|
|
||||||
versionStr = GetSwfVer();
|
|
||||||
if (versionStr == -1 ) {
|
|
||||||
return false;
|
|
||||||
} else if (versionStr != 0) {
|
|
||||||
if(isIE && isWin && !isOpera) {
|
|
||||||
// Given "WIN 2,0,0,11"
|
|
||||||
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
|
|
||||||
tempString = tempArray[1]; // "2,0,0,11"
|
|
||||||
versionArray = tempString.split(","); // ['2', '0', '0', '11']
|
|
||||||
} else {
|
|
||||||
versionArray = versionStr.split(".");
|
|
||||||
}
|
|
||||||
var versionMajor = versionArray[0];
|
|
||||||
var versionMinor = versionArray[1];
|
|
||||||
var versionRevision = versionArray[2];
|
|
||||||
|
|
||||||
// is the major.revision >= requested major.revision AND the minor version >= requested minor
|
|
||||||
if (versionMajor > parseFloat(reqMajorVer)) {
|
|
||||||
return true;
|
|
||||||
} else if (versionMajor == parseFloat(reqMajorVer)) {
|
|
||||||
if (versionMinor > parseFloat(reqMinorVer))
|
|
||||||
return true;
|
|
||||||
else if (versionMinor == parseFloat(reqMinorVer)) {
|
|
||||||
if (versionRevision >= parseFloat(reqRevision))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function AC_AddExtension(src, ext)
|
|
||||||
{
|
|
||||||
if (src.indexOf('?') != -1)
|
|
||||||
return src.replace(/\?/, ext+'?');
|
|
||||||
else
|
|
||||||
return src + ext;
|
|
||||||
}
|
|
||||||
|
|
||||||
function AC_Generateobj(objAttrs, params, embedAttrs)
|
|
||||||
{
|
|
||||||
var str = '';
|
|
||||||
if (isIE && isWin && !isOpera)
|
|
||||||
{
|
|
||||||
str += '<object ';
|
|
||||||
for (var i in objAttrs)
|
|
||||||
{
|
|
||||||
str += i + '="' + objAttrs[i] + '" ';
|
|
||||||
}
|
|
||||||
str += '>';
|
|
||||||
for (var i in params)
|
|
||||||
{
|
|
||||||
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
|
|
||||||
}
|
|
||||||
str += '</object>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
str += '<embed ';
|
|
||||||
for (var i in embedAttrs)
|
|
||||||
{
|
|
||||||
str += i + '="' + embedAttrs[i] + '" ';
|
|
||||||
}
|
|
||||||
str += '> </embed>';
|
|
||||||
}
|
|
||||||
|
|
||||||
document.write(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
function AC_FL_RunContent(){
|
|
||||||
var ret =
|
|
||||||
AC_GetArgs
|
|
||||||
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
|
|
||||||
, "application/x-shockwave-flash"
|
|
||||||
);
|
|
||||||
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
function AC_SW_RunContent(){
|
|
||||||
var ret =
|
|
||||||
AC_GetArgs
|
|
||||||
( arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
|
|
||||||
, null
|
|
||||||
);
|
|
||||||
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
|
|
||||||
var ret = new Object();
|
|
||||||
ret.embedAttrs = new Object();
|
|
||||||
ret.params = new Object();
|
|
||||||
ret.objAttrs = new Object();
|
|
||||||
for (var i=0; i < args.length; i=i+2){
|
|
||||||
var currArg = args[i].toLowerCase();
|
|
||||||
|
|
||||||
switch (currArg){
|
|
||||||
case "classid":
|
|
||||||
break;
|
|
||||||
case "pluginspage":
|
|
||||||
ret.embedAttrs[args[i]] = args[i+1];
|
|
||||||
break;
|
|
||||||
case "src":
|
|
||||||
case "movie":
|
|
||||||
args[i+1] = AC_AddExtension(args[i+1], ext);
|
|
||||||
ret.embedAttrs["src"] = args[i+1];
|
|
||||||
ret.params[srcParamName] = args[i+1];
|
|
||||||
break;
|
|
||||||
case "onafterupdate":
|
|
||||||
case "onbeforeupdate":
|
|
||||||
case "onblur":
|
|
||||||
case "oncellchange":
|
|
||||||
case "onclick":
|
|
||||||
case "ondblclick":
|
|
||||||
case "ondrag":
|
|
||||||
case "ondragend":
|
|
||||||
case "ondragenter":
|
|
||||||
case "ondragleave":
|
|
||||||
case "ondragover":
|
|
||||||
case "ondrop":
|
|
||||||
case "onfinish":
|
|
||||||
case "onfocus":
|
|
||||||
case "onhelp":
|
|
||||||
case "onmousedown":
|
|
||||||
case "onmouseup":
|
|
||||||
case "onmouseover":
|
|
||||||
case "onmousemove":
|
|
||||||
case "onmouseout":
|
|
||||||
case "onkeypress":
|
|
||||||
case "onkeydown":
|
|
||||||
case "onkeyup":
|
|
||||||
case "onload":
|
|
||||||
case "onlosecapture":
|
|
||||||
case "onpropertychange":
|
|
||||||
case "onreadystatechange":
|
|
||||||
case "onrowsdelete":
|
|
||||||
case "onrowenter":
|
|
||||||
case "onrowexit":
|
|
||||||
case "onrowsinserted":
|
|
||||||
case "onstart":
|
|
||||||
case "onscroll":
|
|
||||||
case "onbeforeeditfocus":
|
|
||||||
case "onactivate":
|
|
||||||
case "onbeforedeactivate":
|
|
||||||
case "ondeactivate":
|
|
||||||
case "type":
|
|
||||||
case "codebase":
|
|
||||||
case "id":
|
|
||||||
ret.objAttrs[args[i]] = args[i+1];
|
|
||||||
break;
|
|
||||||
case "width":
|
|
||||||
case "height":
|
|
||||||
case "align":
|
|
||||||
case "vspace":
|
|
||||||
case "hspace":
|
|
||||||
case "class":
|
|
||||||
case "title":
|
|
||||||
case "accesskey":
|
|
||||||
case "name":
|
|
||||||
case "tabindex":
|
|
||||||
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ret.objAttrs["classid"] = classid;
|
|
||||||
if (mimeType) ret.embedAttrs["type"] = mimeType;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
<image_source>/extras/ukplayer/dummycontent/explain.jpg</image_source>
|
<image_source>/extras/ukplayer/dummycontent/explain.jpg</image_source>
|
||||||
<duration>5</duration>
|
<duration>5</duration>
|
||||||
<thumb_source>/extras/ukplayer/dummycontent/explain.jpg</thumb_source>
|
<thumb_source>/extras/ukplayer/dummycontent/explain.jpg</thumb_source>
|
||||||
<sound_source>dummycontent/transporter.mp3</sound_source>
|
<sound_source>/extras/ukplayer/dummycontent/transporter.mp3</sound_source>
|
||||||
</slide>
|
</slide>
|
||||||
<slide>
|
<slide>
|
||||||
<width>400</width>
|
<width>400</width>
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
<image_source>/extras/ukplayer/dummycontent/united-knowledge-logo.jpg</image_source>
|
<image_source>/extras/ukplayer/dummycontent/united-knowledge-logo.jpg</image_source>
|
||||||
<duration>5</duration>
|
<duration>5</duration>
|
||||||
<thumb_source>/extras/ukplayer/dummycontent/united-knowledge-logo.jpg</thumb_source>
|
<thumb_source>/extras/ukplayer/dummycontent/united-knowledge-logo.jpg</thumb_source>
|
||||||
<sound_source>dummycontent/transporter.mp3</sound_source>
|
<sound_source>/extras/ukplayer/dummycontent/transporter.mp3</sound_source>
|
||||||
</slide>
|
</slide>
|
||||||
</slides>
|
</slides>
|
||||||
</content>
|
</content>
|
||||||
|
|
|
||||||
BIN
www/extras/ukplayer/expressInstall.swf
Normal file
BIN
www/extras/ukplayer/expressInstall.swf
Normal file
Binary file not shown.
|
|
@ -1,245 +1,250 @@
|
||||||
United Knowledge Slideshow Player - readme.txt
|
United Knowledge Slideshow Player - readme.txt
|
||||||
|
|
||||||
Copyright: United Knowledge, 2008
|
Copyright: United Knowledge, 2008
|
||||||
Under the terms of the GNU General Public License, version 2
|
|
||||||
|
The Slideshow PLayer is licensed under the terms of the GNU General Public License, version 2
|
||||||
|
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
||||||
**********************************************************************************************
|
|
||||||
* *
|
SWFObject 2, the code used to display the Slideshow, is licensed under the MIT License
|
||||||
* The configuration XML *
|
http://www.opensource.org/licenses/mit-license.php
|
||||||
* *
|
|
||||||
**********************************************************************************************
|
|
||||||
|
**********************************************************************************************
|
||||||
With the configuration .xml file you can customize the look and the behaviour of the
|
* *
|
||||||
slideshow. It contains the following properties (the values are example values; there are
|
* The configuration XML *
|
||||||
default values for most, but we recommend setting ALL properties yourself).
|
* *
|
||||||
|
**********************************************************************************************
|
||||||
|
|
||||||
|
With the configuration .xml file you can customize the look and the behaviour of the
|
||||||
**********************************************************************************************
|
slideshow. It contains the following properties (the values are example values; there are
|
||||||
* Structure of the xml *
|
default values for most, but we recommend setting ALL properties yourself).
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<config>
|
|
||||||
[properties go here]
|
**********************************************************************************************
|
||||||
</config>
|
* Structure of the xml *
|
||||||
|
**********************************************************************************************
|
||||||
|
|
||||||
|
<config>
|
||||||
**********************************************************************************************
|
[properties go here]
|
||||||
* General properties *
|
</config>
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<content_url>/someUrl/someXmlFile.xml</content_url>
|
|
||||||
The url to the .xml file that contains the content.
|
**********************************************************************************************
|
||||||
Value: an absolute or relative url to an xml file
|
* General properties *
|
||||||
|
**********************************************************************************************
|
||||||
<width>400</width>
|
|
||||||
<height>300</height>
|
<content_url>/someUrl/someXmlFile.xml</content_url>
|
||||||
The width and height of the player itself (this value is overwritten by the flashVars
|
The url to the .xml file that contains the content.
|
||||||
but the tags need to be here).
|
Value: an absolute or relative url to an xml file
|
||||||
Value: number in px
|
|
||||||
|
<width>400</width>
|
||||||
<default_duration>8</default_duration>
|
<height>300</height>
|
||||||
The duration of each slide. This can be overwritten by setting the duration per slide
|
The width and height of the player itself (this value is overwritten by the flashVars
|
||||||
in the content .xml file.
|
but the tags need to be here).
|
||||||
Value: number in seconds
|
Value: number in px
|
||||||
|
|
||||||
<default_slidewidth>400</default_slidewidth>
|
<default_duration>8</default_duration>
|
||||||
<default_slideheight>300</default_slideheight>
|
The duration of each slide. This can be overwritten by setting the duration per slide
|
||||||
If the width or height of a slide is larger than the values specified here, the slide
|
in the content .xml file.
|
||||||
will be resized proportionally. Slides that are smaller than the slidshow will not be
|
Value: number in seconds
|
||||||
resized.
|
|
||||||
Value: number in px
|
<default_slidewidth>400</default_slidewidth>
|
||||||
|
<default_slideheight>300</default_slideheight>
|
||||||
<background_color>0xeeeeee</background_color>
|
If the width or height of a slide is larger than the values specified here, the slide
|
||||||
The background color for the slideshow. This will be visible during the transitions
|
will be resized proportionally. Slides that are smaller than the slidshow will not be
|
||||||
and when a slide is smaller than the slideshow.
|
resized.
|
||||||
Value: 0x followed by hexadecimal color
|
Value: number in px
|
||||||
|
|
||||||
|
<background_color>0xeeeeee</background_color>
|
||||||
|
The background color for the slideshow. This will be visible during the transitions
|
||||||
**********************************************************************************************
|
and when a slide is smaller than the slideshow.
|
||||||
* Text properties *
|
Value: 0x followed by hexadecimal color
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<font>Verdana</font>
|
|
||||||
The font of the text in the slideshow.
|
**********************************************************************************************
|
||||||
Value: Verdana, Arial or TimesNewRoman
|
* Text properties *
|
||||||
|
**********************************************************************************************
|
||||||
<font_size>12</font_size>
|
|
||||||
The font size of the text in the slideshow.
|
<font>Verdana</font>
|
||||||
Value: number in px
|
The font of the text in the slideshow.
|
||||||
|
Value: Verdana, Arial or TimesNewRoman
|
||||||
<font_color>0xffffff</font_color>
|
|
||||||
The color of the text in the slideshow.
|
<font_size>12</font_size>
|
||||||
Value: 0x followed by hexadecimal color
|
The font size of the text in the slideshow.
|
||||||
|
Value: number in px
|
||||||
<text_border_color>0xffffff</text_border_color>
|
|
||||||
The color of the border of the textarea.
|
<font_color>0xffffff</font_color>
|
||||||
Value: 0x followed by hexadecimal color
|
The color of the text in the slideshow.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
<text_bg_color>0x000000</text_bg_color>
|
|
||||||
The background color of the textarea.
|
<text_border_color>0xffffff</text_border_color>
|
||||||
Value: 0x followed by hexadecimal color
|
The color of the border of the textarea.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
<text_autohide>false</text_autohide>
|
|
||||||
When set to true the textarea will hide after a few seconds.
|
<text_bg_color>0x000000</text_bg_color>
|
||||||
Value: true or false
|
The background color of the textarea.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
|
|
||||||
|
<text_autohide>false</text_autohide>
|
||||||
**********************************************************************************************
|
When set to true the textarea will hide after a few seconds.
|
||||||
* Controls properties *
|
Value: true or false
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<controls_color>0xffffff</controls_color>
|
|
||||||
The color of the buttons.
|
**********************************************************************************************
|
||||||
Value: 0x followed by hexadecimal color
|
* Controls properties *
|
||||||
|
**********************************************************************************************
|
||||||
<controls_border_color>0xffffff</controls_border_color>
|
|
||||||
The color of the border of the area with the buttons.
|
<controls_color>0xffffff</controls_color>
|
||||||
Value: 0x followed by hexadecimal color
|
The color of the buttons.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
<controls_bg_color>0x000000</controls_bg_color>
|
|
||||||
The background color of the area with the buttons.
|
<controls_border_color>0xffffff</controls_border_color>
|
||||||
Value: 0x followed by hexadecimal color
|
The color of the border of the area with the buttons.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
<controls_autohide>true</controls_autohide>
|
|
||||||
When set to true the controls will hide after a few seconds.
|
<controls_bg_color>0x000000</controls_bg_color>
|
||||||
Value: true or false
|
The background color of the area with the buttons.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
|
|
||||||
|
<controls_autohide>true</controls_autohide>
|
||||||
**********************************************************************************************
|
When set to true the controls will hide after a few seconds.
|
||||||
* Thumbnail properties *
|
Value: true or false
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<thumbnail_width>40</thumbnail_width>
|
|
||||||
<thumbnail_height>30</thumbnail_height>
|
**********************************************************************************************
|
||||||
The height and width of each thumbnail image in the bar at the bottom of the
|
* Thumbnail properties *
|
||||||
slideshow.
|
**********************************************************************************************
|
||||||
Value: number in px
|
|
||||||
|
<thumbnail_width>40</thumbnail_width>
|
||||||
<thumbnail_border_color>0x888888</thumbnail_border_color>
|
<thumbnail_height>30</thumbnail_height>
|
||||||
The color of the border of each thumbnail image.
|
The height and width of each thumbnail image in the bar at the bottom of the
|
||||||
Value: 0x followed by hexadecimal color
|
slideshow.
|
||||||
|
Value: number in px
|
||||||
<menu_autohide>true</menu_autohide>
|
|
||||||
When set to true the thumbnail bar will hide after a few seconds.
|
<thumbnail_border_color>0x888888</thumbnail_border_color>
|
||||||
Value: true or false
|
The color of the border of each thumbnail image.
|
||||||
|
Value: 0x followed by hexadecimal color
|
||||||
<menu_dead_zone_width>160</menu_dead_zone_width>
|
|
||||||
The width of the area in the center of the thumbnail bar in which the user can hover
|
<menu_autohide>true</menu_autohide>
|
||||||
the mouse, without the thumbnail bar moving to the left or to the right.
|
When set to true the thumbnail bar will hide after a few seconds.
|
||||||
Value: number in px
|
Value: true or false
|
||||||
|
|
||||||
<menu_gaps>6</menu_gaps>
|
<menu_dead_zone_width>160</menu_dead_zone_width>
|
||||||
The width of the gap between two thumbnail images.
|
The width of the area in the center of the thumbnail bar in which the user can hover
|
||||||
Value: number in px
|
the mouse, without the thumbnail bar moving to the left or to the right.
|
||||||
|
Value: number in px
|
||||||
|
|
||||||
|
<menu_gaps>6</menu_gaps>
|
||||||
**********************************************************************************************
|
The width of the gap between two thumbnail images.
|
||||||
* Behaviour properties *
|
Value: number in px
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<mute_at_start>true</mute_at_start>
|
|
||||||
If true the slideshow will start with the sound muted.
|
**********************************************************************************************
|
||||||
Value: true or false
|
* Behaviour properties *
|
||||||
|
**********************************************************************************************
|
||||||
<autostart>false</autostart>
|
|
||||||
If true the slideshow will start upon loading. If false a play button will be
|
<mute_at_start>true</mute_at_start>
|
||||||
displayed.
|
If true the slideshow will start with the sound muted.
|
||||||
Value: true or false
|
Value: true or false
|
||||||
|
|
||||||
<autopause>true</autopause>
|
<autostart>false</autostart>
|
||||||
If true the slideshow will pause when clicking on a thumbnail or clicking the
|
If true the slideshow will start upon loading. If false a play button will be
|
||||||
previous or next buttons.
|
displayed.
|
||||||
Value: true or false
|
Value: true or false
|
||||||
|
|
||||||
<loop>false</loop>
|
<autopause>true</autopause>
|
||||||
If true the slideshow will loop. If false, when the last slide has been displayed,
|
If true the slideshow will pause when clicking on a thumbnail or clicking the
|
||||||
the slideshow will move back to the first slide and show a play button.
|
previous or next buttons.
|
||||||
Value: true or false
|
Value: true or false
|
||||||
|
|
||||||
|
<loop>false</loop>
|
||||||
|
If true the slideshow will loop. If false, when the last slide has been displayed,
|
||||||
**********************************************************************************************
|
the slideshow will move back to the first slide and show a play button.
|
||||||
* Error messages *
|
Value: true or false
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<error_message_content><![CDATA[Content Xml not found]]></error_message_content>
|
|
||||||
<error_message_image><![CDATA[Image not found]]></error_message_image>
|
**********************************************************************************************
|
||||||
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
* Error messages *
|
||||||
|
**********************************************************************************************
|
||||||
|
|
||||||
|
<error_message_content><![CDATA[Content Xml not found]]></error_message_content>
|
||||||
|
<error_message_image><![CDATA[Image not found]]></error_message_image>
|
||||||
**********************************************************************************************
|
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
||||||
* *
|
|
||||||
* The content XML *
|
|
||||||
* *
|
|
||||||
**********************************************************************************************
|
|
||||||
|
**********************************************************************************************
|
||||||
The content .xml file contains the properties for each slide.
|
* *
|
||||||
|
* The content XML *
|
||||||
|
* *
|
||||||
|
**********************************************************************************************
|
||||||
**********************************************************************************************
|
|
||||||
* Structure of the xml *
|
The content .xml file contains the properties for each slide.
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<content>
|
|
||||||
<slides>
|
**********************************************************************************************
|
||||||
<slide>[properties go here]</slide>
|
* Structure of the xml *
|
||||||
<slide>[properties go here]</slide>
|
**********************************************************************************************
|
||||||
...
|
|
||||||
</slides>
|
<content>
|
||||||
</content>
|
<slides>
|
||||||
|
<slide>[properties go here]</slide>
|
||||||
|
<slide>[properties go here]</slide>
|
||||||
|
...
|
||||||
**********************************************************************************************
|
</slides>
|
||||||
* Properties in the slide tag *
|
</content>
|
||||||
**********************************************************************************************
|
|
||||||
|
|
||||||
<title><![CDATA[My first slide]]></title>
|
|
||||||
The title of the slide.
|
**********************************************************************************************
|
||||||
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
* Properties in the slide tag *
|
||||||
|
**********************************************************************************************
|
||||||
<description><![CDATA[This is my first slide!]]></description>
|
|
||||||
The description of the slide.
|
<title><![CDATA[My first slide]]></title>
|
||||||
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
The title of the slide.
|
||||||
|
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
||||||
<image_source>/someUrl/someImg.jpg</image_source>
|
|
||||||
The url to the slide image.
|
<description><![CDATA[This is my first slide!]]></description>
|
||||||
Value: an absolute or relative url to a .jpg, .gif or .png file
|
The description of the slide.
|
||||||
|
Value: any text in CDATA tags: <![CDATA[ ... ]]>
|
||||||
<thumb_source>/someUrl/someImg_thumb.jpg</thumb_source>
|
|
||||||
The url to the thumbnail of the slide image.
|
<image_source>/someUrl/someImg.jpg</image_source>
|
||||||
Value: an absolute or relative url to a .jpg, .gif or .png file
|
The url to the slide image.
|
||||||
|
Value: an absolute or relative url to a .jpg, .gif or .png file
|
||||||
<sound_source>/someUrl/someImg_thumb.jpg</sound_source>
|
|
||||||
The url to the sound file that will be played when the slide is displayed. It will be
|
<thumb_source>/someUrl/someImg_thumb.jpg</thumb_source>
|
||||||
played once for the duration of the slide (if the duration of the sound file is longer
|
The url to the thumbnail of the slide image.
|
||||||
than the set duration of the slide it will be cut off). This property is optional.
|
Value: an absolute or relative url to a .jpg, .gif or .png file
|
||||||
Value: an absolute or relative url to a .mp3 file
|
|
||||||
|
<sound_source>/someUrl/someImg_thumb.jpg</sound_source>
|
||||||
<duration>8</duration>
|
The url to the sound file that will be played when the slide is displayed. It will be
|
||||||
The duration for this specific slide. This value will overwrite the duration value set
|
played once for the duration of the slide (if the duration of the sound file is longer
|
||||||
in the configuration xml. This property is optional.
|
than the set duration of the slide it will be cut off). This property is optional.
|
||||||
Value: number in seconds
|
Value: an absolute or relative url to a .mp3 file
|
||||||
|
|
||||||
<width>400</width>
|
<duration>8</duration>
|
||||||
<height>300</height>
|
The duration for this specific slide. This value will overwrite the duration value set
|
||||||
The width and height of the slide. This will overwrite the default_slidewidth and
|
in the configuration xml. This property is optional.
|
||||||
default_slideheight set in the configuration xml. The width and height properties are
|
Value: number in seconds
|
||||||
optional.
|
|
||||||
Value: number in px
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
The width and height of the slide. This will overwrite the default_slidewidth and
|
||||||
|
default_slideheight set in the configuration xml. The width and height properties are
|
||||||
**********************************************************************************************
|
optional.
|
||||||
* eof *
|
Value: number in px
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**********************************************************************************************
|
||||||
|
* eof *
|
||||||
**********************************************************************************************
|
**********************************************************************************************
|
||||||
Binary file not shown.
|
|
@ -1,70 +1,54 @@
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Strict/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<head>
|
<html xmlns="http:/www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
<head>
|
||||||
<title>slideshow</title>
|
<title>UKplayer Slideshow Demo</title>
|
||||||
<script language="javascript">AC_FL_RunContent = 0;</script>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<script src="/extras/ukplayer/AC_RunActiveContent.js" language="javascript"></script>
|
<script type="text/javascript" src="/extras/ukplayer/swfobject.js"></script>
|
||||||
</head>
|
<script type="text/javascript">
|
||||||
<body bgcolor="#ffffff">
|
swfobject.registerObject("myFlashContent","9.0.0","/extras/ukplayer/expressInstall.swf");
|
||||||
<!--url's used in the movie-->
|
</script>
|
||||||
<!--text used in the movie-->
|
</head>
|
||||||
<!--
|
|
||||||
This is the United Knowledge Player for WebGUI.
|
<body>
|
||||||
It enables you to display foto's as a movie. The
|
|
||||||
configuration options can be found in the readme
|
<!--
|
||||||
file here:
|
This is the United Knowledge Player for WebGUI.
|
||||||
/extras/ukplayer/readme.txt
|
It enables you to display foto's as a movie. The
|
||||||
|
configuration options can be found in the readme
|
||||||
There are three example files to show you how to
|
file here:
|
||||||
use this player:
|
/extras/ukplayer/readme.txt
|
||||||
/extras/ukplayer/slideshow.html
|
|
||||||
/extras/ukplayer/config.xml
|
There are three example files to show you how to
|
||||||
/extras/ukplayer/content.xml
|
use this player:
|
||||||
|
/extras/ukplayer/slideshow.html
|
||||||
This player is Free Software under the GPL v2
|
/extras/ukplayer/config.xml
|
||||||
Check out the latest source on:
|
/extras/ukplayer/content.xml
|
||||||
http://195.64.86.55/ukslideshow/trunk .
|
|
||||||
|
This player is Free Software under the GPL v2
|
||||||
copyright 2008 United Knowledge http://www.unitedknowledge.nl/
|
Check out the latest source on:
|
||||||
-->
|
http:/195.64.86.55/ukslideshow/trunk .
|
||||||
<!-- saved from url=(0013)about:internet -->
|
|
||||||
<script language="javascript">
|
Copyright 2008 United Knowledge http:/www.unitedknowledge.nl/
|
||||||
if (AC_FL_RunContent == 0) {
|
-->
|
||||||
alert("This page requires AC_RunActiveContent.js.");
|
|
||||||
} else {
|
<div>
|
||||||
AC_FL_RunContent(
|
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="300" id="myFlashContent">
|
||||||
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
|
<param name="movie" value="/extras/ukplayer/slideShow.swf" />
|
||||||
'width', '400',
|
<param name="flashvars" value="config=/extras/ukplayer/config.xml" />
|
||||||
'height', '300',
|
<!--[if !IE]>-->
|
||||||
'src', 'swc/assets',
|
<object type="application/x-shockwave-flash" data="/extras/ukplayer/slideShow.swf" width="400" height="300">
|
||||||
'quality', 'high',
|
<param name="flashvars" value="config=/extras/ukplayer/config.xml" />
|
||||||
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
|
<!--<![endif]-->
|
||||||
'align', 'middle',
|
<a href="http:/www.adobe.com/go/getflashplayer">
|
||||||
'play', 'true',
|
<img src="http:/www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
|
||||||
'loop', 'true',
|
</a>
|
||||||
'scale', 'showall',
|
<!--[if !IE]>-->
|
||||||
'wmode', 'window',
|
</object>
|
||||||
'devicefont', 'false',
|
<!--<![endif]-->
|
||||||
'id', 'slideShow',
|
</object>
|
||||||
'bgcolor', '#ffffff',
|
</div>
|
||||||
'name', 'coverflow',
|
|
||||||
'menu', 'true',
|
<p>Code generated with the <a href="http:/www.bobbyvandersluis.com/swfobject/generator/index.html">SWFObject 2 HTML and JavaScript generator</a>.</p>
|
||||||
// note: the width & height in the flashVars below MUST match the width & height set above
|
|
||||||
'flashVars', 'config=/extras/ukplayer/config.xml&width=400&height=300&backgroundColor=0xCCCCCC&fontColor=&textBorderColor=&textBackgroundColor=&controlsColor=&controlsBorderColor=&controlsBackgroundColor=',
|
</body>
|
||||||
'allowFullScreen', 'false',
|
|
||||||
'allowScriptAccess','sameDomain',
|
|
||||||
'movie', '/extras/ukplayer/slideShow',
|
|
||||||
'salign', ''
|
|
||||||
); //end AC code
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<noscript>
|
|
||||||
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="300" id="swc/assets" align="middle">
|
|
||||||
<param name="allowScriptAccess" value="sameDomain" />
|
|
||||||
<param name="allowFullScreen" value="false" />
|
|
||||||
<param name="flashVars" value="config=/extras/ukplayer/config.xml" />
|
|
||||||
<param name="movie" value="/extras/ukplayer/slideShow.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="/extras/ukplayer/slideShow.swf" quality="high" bgcolor="#ffffff" width="400" height="300" name="swc/assets" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" flashvars="config=/extras/ukplayer/config.xml" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
|
|
||||||
</object>
|
|
||||||
</noscript>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
5
www/extras/ukplayer/swfobject.js
Normal file
5
www/extras/ukplayer/swfobject.js
Normal file
File diff suppressed because one or more lines are too long
373
www/extras/yui-webgui/build/layout/draggable.js
vendored
Normal file
373
www/extras/yui-webgui/build/layout/draggable.js
vendored
Normal file
|
|
@ -0,0 +1,373 @@
|
||||||
|
//Confugration
|
||||||
|
//sets the drag accruacy
|
||||||
|
//a value of 0 is most accurate. The number can be raised to improve performance.
|
||||||
|
var accuracy = 2;
|
||||||
|
|
||||||
|
//list of the content item names. Could be searched for, but hard coded for performance
|
||||||
|
var draggableObjectList=new Array();
|
||||||
|
//Internal Config (Do not Edit)
|
||||||
|
|
||||||
|
//browser check
|
||||||
|
var dom=document.getElementById&&!document.all
|
||||||
|
var docElement = document.documentElement;
|
||||||
|
var pageURL = "";
|
||||||
|
var topelement=dom? "HTML" : "BODY"
|
||||||
|
var pageHeight=0;
|
||||||
|
var pageWidth=0;
|
||||||
|
var scrollJump=50;
|
||||||
|
var blankCount=1;
|
||||||
|
|
||||||
|
var Dom = YAHOO.util.Dom;
|
||||||
|
var Event = YAHOO.util.Event;
|
||||||
|
var DDM = YAHOO.util.DragDropMgr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//goes up the parent tree until class is found. If not found, returns null
|
||||||
|
function dragable_getObjectByClass(target,clazz) {
|
||||||
|
var classMatch = new RegExp("\\b" + clazz + "\\b");
|
||||||
|
while (target.tagName!=topelement && target.className.search(classMatch) == -1){
|
||||||
|
target=dom? target.parentNode : target.parentElement
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.className.search(classMatch) != -1){
|
||||||
|
return target;
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
YAHOO.webgui = {};
|
||||||
|
|
||||||
|
YAHOO.webgui.DDList = function(id, sGroup, config) {
|
||||||
|
|
||||||
|
YAHOO.webgui.DDList.superclass.constructor.call(this, id, sGroup, config);
|
||||||
|
|
||||||
|
this.logger = this.logger || YAHOO;
|
||||||
|
var el = this.getDragEl();
|
||||||
|
Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent
|
||||||
|
|
||||||
|
this.goingUp = false;
|
||||||
|
this.lastY = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
YAHOO.extend(YAHOO.webgui.DDList, YAHOO.util.DDProxy, {
|
||||||
|
|
||||||
|
startDrag: function(x, y) {
|
||||||
|
this.logger.log(this.id + " startDrag");
|
||||||
|
|
||||||
|
// make the proxy look like the source element
|
||||||
|
var dragEl = this.getDragEl();
|
||||||
|
var clickEl = this.getEl();
|
||||||
|
Dom.setStyle(clickEl, "visibility", "hidden");
|
||||||
|
|
||||||
|
dragEl.innerHTML = clickEl.innerHTML;
|
||||||
|
|
||||||
|
Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
|
||||||
|
Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
|
||||||
|
Dom.setStyle(dragEl, "border", "2px solid gray");
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
//Put things back like they were
|
||||||
|
onDragOut: function(e,id){
|
||||||
|
var obj = Dom.get(id);
|
||||||
|
if (dragable_isBlank(obj)) {
|
||||||
|
document.getElementById(id).className="blank";
|
||||||
|
}else if (obj.className == 'draggedOverTop' || obj.className == 'draggedOverBottom') {
|
||||||
|
document.getElementById(id).className="dragable";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
endDrag: function(e) {
|
||||||
|
|
||||||
|
var srcEl = this.getEl();
|
||||||
|
var proxy = this.getDragEl();
|
||||||
|
|
||||||
|
// Show the proxy element and animate it to the src element's location
|
||||||
|
Dom.setStyle(proxy, "visibility", "");
|
||||||
|
var a = new YAHOO.util.Motion(
|
||||||
|
proxy, {
|
||||||
|
points: {
|
||||||
|
to: Dom.getXY(srcEl)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
0.2,
|
||||||
|
YAHOO.util.Easing.easeOut
|
||||||
|
)
|
||||||
|
var proxyid = proxy.id;
|
||||||
|
var thisid = this.id;
|
||||||
|
|
||||||
|
// Hide the proxy and show the source element when finished with the animation
|
||||||
|
a.onComplete.subscribe(function() {
|
||||||
|
Dom.setStyle(proxyid, "visibility", "hidden");
|
||||||
|
Dom.setStyle(thisid, "visibility", "");
|
||||||
|
});
|
||||||
|
a.animate();
|
||||||
|
},
|
||||||
|
|
||||||
|
onDragDrop: function(e, id) {
|
||||||
|
|
||||||
|
var position;
|
||||||
|
if(this.goingUp){
|
||||||
|
position = "top";
|
||||||
|
}else{
|
||||||
|
position = "bottom";
|
||||||
|
}
|
||||||
|
var target = this.getEl().parentNode.parentNode;
|
||||||
|
var destination = Dom.get(id);
|
||||||
|
if(!dragable_isBlank(destination)){
|
||||||
|
destination.className = "dragable";
|
||||||
|
destination = Dom.get(id).parentNode.parentNode;
|
||||||
|
}
|
||||||
|
dragable_moveContent(target, destination ,position);
|
||||||
|
|
||||||
|
var url = pageURL + dragable_getContentMap();
|
||||||
|
|
||||||
|
document.getElementById("dragSubmitter").src = url;
|
||||||
|
|
||||||
|
return;
|
||||||
|
// If there is one drop interaction, the li was dropped either on the list,
|
||||||
|
// or it was dropped on the current location of the source element.
|
||||||
|
if (DDM.interactionInfo.drop.length === 1) {
|
||||||
|
|
||||||
|
// The position of the cursor at the time of the drop (YAHOO.util.Point)
|
||||||
|
var pt = DDM.interactionInfo.point;
|
||||||
|
|
||||||
|
// The region occupied by the source element at the time of the drop
|
||||||
|
var region = DDM.interactionInfo.sourceRegion;
|
||||||
|
|
||||||
|
// Check to see if we are over the source element's location. We will
|
||||||
|
// append to the bottom of the list once we are sure it was a drop in
|
||||||
|
// the negative space (the area of the list without any list items)
|
||||||
|
if (!region.intersect(pt)) {
|
||||||
|
var destEl = Dom.get(id);
|
||||||
|
var destDD = DDM.getDDById(id);
|
||||||
|
destEl.appendChild(this.getEl());
|
||||||
|
destDD.isEmpty = false;
|
||||||
|
DDM.refreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onDrag: function(e) {
|
||||||
|
// Keep track of the direction of the drag for use during onDragOver
|
||||||
|
var y = Event.getPageY(e);
|
||||||
|
if (y < this.lastY) {
|
||||||
|
this.goingUp = true;
|
||||||
|
} else if (y > this.lastY) {
|
||||||
|
this.goingUp = false;
|
||||||
|
}
|
||||||
|
this.lastY = y;
|
||||||
|
dragable_adjustScrollBars(e);
|
||||||
|
},
|
||||||
|
|
||||||
|
onDragOver: function(e, id) {
|
||||||
|
var srcEl = this.getEl();
|
||||||
|
if(srcEl.id == id){return;}
|
||||||
|
|
||||||
|
var obj = Dom.get(id);
|
||||||
|
// We are only concerned with list items, we ignore the dragover
|
||||||
|
// notifications for the list.
|
||||||
|
if (dragable_isBlank(obj)) {
|
||||||
|
document.getElementById(id).className="blankOver";
|
||||||
|
}else if (this.goingUp) {
|
||||||
|
document.getElementById(id).className="draggedOverTop";
|
||||||
|
}else {
|
||||||
|
document.getElementById(id).className="draggedOverBottom";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if (destEl.nodeName.toLowerCase() == "li") {
|
||||||
|
var orig_p = srcEl.parentNode;
|
||||||
|
var p = destEl.parentNode;
|
||||||
|
|
||||||
|
if (this.goingUp) {
|
||||||
|
p.insertBefore(srcEl, destEl); // insert above
|
||||||
|
} else {
|
||||||
|
p.insertBefore(srcEl, destEl.nextSibling); // insert below
|
||||||
|
}
|
||||||
|
|
||||||
|
DDM.refreshCache();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//initialization routine, must be called on load. Sets up event handlers
|
||||||
|
function dragable_init(url) {
|
||||||
|
|
||||||
|
docElement = document.documentElement;
|
||||||
|
|
||||||
|
if (document.compatMode == "BackCompat") {
|
||||||
|
docElement = document.body;
|
||||||
|
}
|
||||||
|
|
||||||
|
pageURL = url;
|
||||||
|
//window.scroll(10,500);
|
||||||
|
//set up event handlers
|
||||||
|
// document.onmouseup=dragable_dragStop;
|
||||||
|
// document.onkeydown=dragable_checkKeyEvent;
|
||||||
|
|
||||||
|
//fill the draggableObject list
|
||||||
|
obj = document.getElementById("position1");
|
||||||
|
contentCount=2;
|
||||||
|
while (obj != null) {
|
||||||
|
tbody = dragable_getElementChildren(obj);
|
||||||
|
children = dragable_getElementChildren(tbody[0]);
|
||||||
|
|
||||||
|
if (children.length == 0) {
|
||||||
|
//stick in a blank
|
||||||
|
var blank_id =dragable_appendBlankRow(tbody[0]);
|
||||||
|
new YAHOO.util.DDTarget(blank_id);
|
||||||
|
}else {
|
||||||
|
for (i = 0; i< children.length;i++) {
|
||||||
|
draggableObjectList[draggableObjectList.length] = children[i];
|
||||||
|
new YAHOO.webgui.DDList(document.getElementById(children[i].id + "_div"));
|
||||||
|
new YAHOO.util.DDTarget(document.getElementById(children[i].id + "_div"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
obj = document.getElementById("position" + contentCount);
|
||||||
|
contentCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//checks to see if the scroll bars need to be adjusted
|
||||||
|
function dragable_adjustScrollBars(e) {
|
||||||
|
|
||||||
|
scrY=0;
|
||||||
|
scrX=0;
|
||||||
|
if (e.clientY > docElement.clientHeight-scrollJump) {
|
||||||
|
if (e.clientY + docElement.scrollTop < pageHeight - (scrollJump + 60)) {
|
||||||
|
scrY=scrollJump;
|
||||||
|
window.scroll(docElement.scrollLeft,docElement.scrollTop + scrY);
|
||||||
|
y-=scrY;
|
||||||
|
}
|
||||||
|
}else if (e.clientY < scrollJump) {
|
||||||
|
if (docElement.scrollTop < scrollJump) {
|
||||||
|
scrY = docElement.scrollTop;
|
||||||
|
}else {
|
||||||
|
scrY=scrollJump;
|
||||||
|
}
|
||||||
|
window.scroll(docElement.scrollLeft,docElement.scrollTop - scrY);
|
||||||
|
y+=scrY;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (e.clientX > docElement.clientWidth-scrollJump) {
|
||||||
|
if (e.clientX + docElement.scrollLeft < pageWidth - (scrollJump + 60)) {
|
||||||
|
scrX=scrollJump;
|
||||||
|
window.scroll(docElement.scrollLeft + scrX,docElement.scrollTop);
|
||||||
|
x-=scrX;
|
||||||
|
}
|
||||||
|
}else if (e.clientX < scrollJump) {
|
||||||
|
if (docElement.scrollLeft < scrollJump) {
|
||||||
|
scrX = docElement.scrollLeft;
|
||||||
|
}else {
|
||||||
|
scrX=scrollJump;
|
||||||
|
}
|
||||||
|
window.scroll(docElement.scrollLeft - scrX,docElement.scrollTop);
|
||||||
|
x+=scrX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragable_isBlank(td) {
|
||||||
|
if (td.id.indexOf("blank") != -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//gets the element children of a dom object
|
||||||
|
function dragable_getElementChildren(obj) {
|
||||||
|
var myArray= new Array();
|
||||||
|
mycnt = 0;
|
||||||
|
for (i=0;i<obj.childNodes.length;i++) {
|
||||||
|
if (obj.childNodes[i].nodeType==1) {
|
||||||
|
myArray[mycnt] = obj.childNodes[i];
|
||||||
|
mycnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return myArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragable_appendBlankRow(parent) {
|
||||||
|
var blank = document.getElementById("blank");
|
||||||
|
blank.className="blank";
|
||||||
|
blankClone = blank.cloneNode(true);
|
||||||
|
blankClone.id = "blank" + new Date().getTime() + blankCount++;
|
||||||
|
draggableObjectList[draggableObjectList.length] = blankClone;
|
||||||
|
parent.appendChild(blankClone);
|
||||||
|
blankClone.style.top=0+"px";
|
||||||
|
blankClone.style.left=0+"px";
|
||||||
|
blank.className="hidden";
|
||||||
|
return blankClone.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//moves a table row from one table to another. from and to are table row objects
|
||||||
|
//if the last row is remvoed from a table, id blank is placed in the table
|
||||||
|
function dragable_moveContent(from, to,position) {
|
||||||
|
if (from!=to && from && to) {
|
||||||
|
var fromParent = from.parentNode;
|
||||||
|
fromParent.removeChild(from);
|
||||||
|
if (dragable_getElementChildren(fromParent).length == 0) {
|
||||||
|
var blank_id = dragable_appendBlankRow(fromParent);
|
||||||
|
new YAHOO.util.DDTarget(blank_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
var toParent = to.parentNode;
|
||||||
|
var toChildren = dragable_getElementChildren(toParent);
|
||||||
|
|
||||||
|
if (toChildren[0].id.indexOf("blank") != -1) {
|
||||||
|
toParent.removeChild(document.getElementById(toChildren[0].id));
|
||||||
|
toParent.appendChild(from);
|
||||||
|
}else if (position == "top"){
|
||||||
|
toParent.insertBefore( from, to );
|
||||||
|
}else {
|
||||||
|
children = dragable_getElementChildren(toParent);
|
||||||
|
i=0;
|
||||||
|
while(children[i] != to && i < children.length) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == children.length - 1) {
|
||||||
|
toParent.appendChild(from);
|
||||||
|
}else {
|
||||||
|
toParent.insertBefore(from,children[i+1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dragable_getContentMap() {
|
||||||
|
//ex 1001,2004;896,494,10010
|
||||||
|
|
||||||
|
contentMap = "";
|
||||||
|
contentCount=1;
|
||||||
|
var contentArea = document.getElementById("position1");
|
||||||
|
while (contentArea) {
|
||||||
|
if ((contentMap != "") || (contentArea.id == 'position2')) {
|
||||||
|
contentMap+=".";
|
||||||
|
}
|
||||||
|
|
||||||
|
//get down to the tr area
|
||||||
|
children = dragable_getElementChildren(contentArea);
|
||||||
|
children=dragable_getElementChildren(children[0]);
|
||||||
|
for (i=0;i<children.length;i++) {
|
||||||
|
if (contentMap != "" && (contentMap.lastIndexOf(".") != contentMap.length-1)) {
|
||||||
|
contentMap+=",";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (children[i].id.indexOf("blank") == -1) {
|
||||||
|
contentMap+=children[i].id.replace(/^td/,"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentCount++;
|
||||||
|
contentArea = document.getElementById("position" + contentCount);
|
||||||
|
}
|
||||||
|
return contentMap;
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue