diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6533116
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,311 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+**/Properties/launchSettings.json
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Typescript v1 declaration files
+typings/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# DNNStuff
+Build/Deploy/
+Build/Output/
+Build/Logs/
+Build/*.txt
\ No newline at end of file
diff --git a/Aggregator.ascx.vb b/Aggregator.ascx.vb
index b2459d7..62dd91d 100644
--- a/Aggregator.ascx.vb
+++ b/Aggregator.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* Aggregator.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Option Strict On
Option Explicit On
diff --git a/Build/Build.bat b/Build/Build.bat
new file mode 100644
index 0000000..f9bcd69
--- /dev/null
+++ b/Build/Build.bat
@@ -0,0 +1,14 @@
+@echo off
+echo.
+set version=%1
+set buildconfig=%2
+set path=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\;%path%
+
+set dnnversion=DNN8
+Msbuild.exe ModuleSpecific.targets /p:DNNVersion=%dnnversion%;Version=%version%;Configuration=%buildconfig%;TargetFrameworkVersion=v4.5;OutputPath="./Build/Output/%dnnversion%" /t:Install /l:FileLogger,Microsoft.Build.Engine;logfile=Logs\Build_%buildconfig%_%dnnversion%.log;verbosity=diagnostic
+if ERRORLEVEL 1 goto end
+
+set dnnversion=DNN7
+Msbuild.exe ModuleSpecific.targets /p:DNNVersion=%dnnversion%;Version=%version%;Configuration=%buildconfig%;TargetFrameworkVersion=v4.0;OutputPath="./Build/Output/%dnnversion%" /t:Install /l:FileLogger,Microsoft.Build.Engine;logfile=Logs\Build_%buildconfig%_%dnnversion%.log;verbosity=diagnostic
+
+:end
\ No newline at end of file
diff --git a/Build/DNNInstall.targets b/Build/DNNInstall.targets
new file mode 100644
index 0000000..bf0321c
--- /dev/null
+++ b/Build/DNNInstall.targets
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DNN7
+ Release
+ 01.00.00
+ output\$(DNNVersion)
+ $(Company).$(ProductName).$(Version).Install.zip
+ deploy\$(Configuration)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Build/DNNStuff.CustomBuildTasks.dll b/Build/DNNStuff.CustomBuildTasks.dll
new file mode 100644
index 0000000..3cf7a3a
Binary files /dev/null and b/Build/DNNStuff.CustomBuildTasks.dll differ
diff --git a/Build/MarkdownDeep.dll b/Build/MarkdownDeep.dll
new file mode 100644
index 0000000..d4c8ef6
Binary files /dev/null and b/Build/MarkdownDeep.dll differ
diff --git a/Build/ModuleSpecific.targets b/Build/ModuleSpecific.targets
new file mode 100644
index 0000000..a909015
--- /dev/null
+++ b/Build/ModuleSpecific.targets
@@ -0,0 +1,26 @@
+
+
+
+ DNNStuff
+ Aggregator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CopyAggregator.ascx.vb b/CopyAggregator.ascx.vb
index 9624ed1..84aedd9 100644
--- a/CopyAggregator.ascx.vb
+++ b/CopyAggregator.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* CopyAggregator.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Option Strict On
Option Explicit On
@@ -297,11 +285,7 @@ Namespace DNNStuff.Aggregator
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
If Page.IsPostBack = False Then
LoadSettings()
diff --git a/DNNStuff.Aggregator.vbproj b/DNNStuff.Aggregator.vbproj
index 7223d62..922825c 100644
--- a/DNNStuff.Aggregator.vbproj
+++ b/DNNStuff.Aggregator.vbproj
@@ -44,9 +44,10 @@
+
- ..\..\dnn7.dev.com\bin\
+ ..\..\sites\dnn7.dnndev.me\bin\DNNStuff.Aggregator.xml285212672
@@ -66,7 +67,7 @@
41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
- ..\..\dnn7.dev.com\bin\
+ ..\..\sites\dnn7.dnndev.me\bin\DNNStuff.Aggregator.xml285212672
@@ -87,7 +88,7 @@
true
- ..\..\dnn7.dev.com\bin\
+ ..\..\sites\dnn7.dnndev.me\bin\285212672
@@ -99,17 +100,17 @@
41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
-
- DotNetNuke
- J:\TOOLING\BIN\DotNetNuke7\DotNetNuke.dll
- J:\TOOLING\BIN\DotNetNuke8\DotNetNuke.dll
- False
+
+ packages\DotNetNuke.Core.7.2.0.613\lib\net40\DotNetNuke.dll
-
- DotNetNuke.WebUtility
- J:\TOOLING\BIN\DotNetNuke7\DotNetNuke.WebUtility.dll
- J:\TOOLING\BIN\DotNetNuke8\DotNetNuke.WebUtility.dll
- False
+
+ packages\DotNetNuke.Web.7.2.0.613\lib\net40\DotNetNuke.Web.dll
+
+
+ packages\DotNetNuke.Web.7.2.0.613\lib\net40\DotNetNuke.WebUtility.dll
+
+
+ packages\DotNetNuke.Core.7.2.0.613\lib\net40\Microsoft.ApplicationBlocks.Data.dllFalse
@@ -143,6 +144,9 @@
System.XML
+
+ packages\DotNetNuke.Web.7.2.0.613\lib\net40\Telerik.Web.UI.dll
+
@@ -175,6 +179,19 @@
Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -185,20 +202,7 @@
-
- Version_Current.md
-
-
-
-
-
-
-
-
-
-
-
-
+ CopyAggregator.ascx.vb
@@ -1470,11 +1474,20 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
- Aggregator.ascx
@@ -1572,9 +1585,10 @@
Designer
-
-
+
+
+
@@ -1602,20 +1616,8 @@
Designer
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1639,12 +1641,12 @@
True1124/
- http://dnn7.dev.com/DesktopModules/DNNStuff - Aggregator
+ http://dnn7.dnndev.me/DesktopModules/DNNStuff - AggregatorTrue
- http://dnn7.dev.com
+ http://dnn7.dnndev.meFalseFalse
- http://dnn7.dev.com/
+ http://dnn7.dnndev.me/False
diff --git a/EditModule.ascx.vb b/EditModule.ascx.vb
index 8e5240d..c7437eb 100644
--- a/EditModule.ascx.vb
+++ b/EditModule.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* EditModule.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Imports DotNetNuke
Imports System.Configuration
Imports System.IO
@@ -86,11 +74,7 @@ Namespace DNNStuff.Aggregator
End Property
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
If Not Page.IsPostBack Then
diff --git a/EditTab.ascx.vb b/EditTab.ascx.vb
index 6edbb27..bf8cec2 100644
--- a/EditTab.ascx.vb
+++ b/EditTab.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* EditTab.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Imports DotNetNuke
Imports System.Configuration
Imports System.IO
@@ -37,11 +25,7 @@ Namespace DNNStuff.Aggregator
'Do not modify it using the code editor.
InitializeComponent()
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
' initialize
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..11f6b50
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Richard Edwards
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/ManageAggregator.ascx.vb b/ManageAggregator.ascx.vb
index 9a3809a..d944d31 100644
--- a/ManageAggregator.ascx.vb
+++ b/ManageAggregator.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* ManageAggregator.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Option Strict On
Option Explicit On
@@ -56,11 +44,7 @@ Namespace DNNStuff.Aggregator
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
cmdAddAllModules.Attributes.Add("onclick", _
diff --git a/ManageScript.ascx.vb b/ManageScript.ascx.vb
index 847361a..bcc9027 100644
--- a/ManageScript.ascx.vb
+++ b/ManageScript.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* ManageScript.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Option Strict On
Option Explicit On
@@ -47,11 +35,7 @@ Namespace DNNStuff.Aggregator
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
If Page.IsPostBack = False Then
diff --git a/ManageSkin.ascx.vb b/ManageSkin.ascx.vb
index 3509116..eebe8df 100644
--- a/ManageSkin.ascx.vb
+++ b/ManageSkin.ascx.vb
@@ -1,15 +1,3 @@
-'***************************************************************************/
-'* ManageSkin.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
Option Strict On
Option Explicit On
@@ -52,11 +40,7 @@ Namespace DNNStuff.Aggregator
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
If Page.IsPostBack = False Then
diff --git a/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.vbproj b/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.vbproj
index e214539..42bb850 100644
--- a/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.vbproj
+++ b/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.vbproj
@@ -45,7 +45,7 @@
- ..\..\..\..\dnn7.dev.com\bin\
+ ..\..\..\..\sites\dnn7.dnndev.me\bin\DNNStuff.Aggregator.SqlDataProvider.xml285212672
@@ -65,7 +65,7 @@
41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
- ..\..\..\..\dnn7.dev.com\bin\
+ ..\..\..\..\sites\dnn7.dnndev.me\bin\DNNStuff.Aggregator.SqlDataProvider.xml285212672
@@ -86,7 +86,7 @@
true
- ..\..\..\..\dnn7.dev.com\bin\
+ ..\..\..\..\sites\dnn7.dnndev.me\bin\DNNStuff.Aggregator.SqlDataProvider.xml285212672
diff --git a/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.xml b/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.xml
deleted file mode 100644
index 1ae2c82..0000000
--- a/Providers/SqlDataProvider/dnnstuff.aggregator.sqldataprovider.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- DNNStuff.Aggregator.SqlDataProvider
- 4.0.2.0
- DNNStuff.Aggregator.SqlDataProvider, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..546e823
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+# Inject Anything Module for DNN (DotNetNuke)
+
+A DNN module that allows you to inject javascript/vbscript/css into your page
+
+## Minimum DNN Version
+
+Current releases support DNN 7.2.0 and later
+
+## Documentation
+[Documentation](https://redtempo.github.io/dnnstuff.injectanything/)
\ No newline at end of file
diff --git a/Resources/Support/edit_5.css b/Resources/Support/edit_5.css
deleted file mode 100644
index 9f50937..0000000
--- a/Resources/Support/edit_5.css
+++ /dev/null
@@ -1,157 +0,0 @@
-@import url("edit.css");
-/* dotnetnuke overrides */
-ul.dnnActions, ul.dnnActions li
-{
- list-style: none;
- padding: 0;
- margin: 0;
-}
-.dnnForm ul.dnnActions, ul.dnnActions
-{
- margin: 1em 0;
- border-top: #ccc double;
- padding: 1em 0 0 0;
-}
-ul.dnnActions li
-{
- overflow: hidden;
- display: block;
- float: left;
-}
-ul.dnnActions li a
-{
- display: block;
- float: left;
-}
-ul.dnnActions li a, a.dnnPrimaryAction, a.dnnPrimaryAction:link, a.dnnPrimaryAction:visited, a.dnnSecondaryAction, a.dnnSecondaryAction:link, a.dnnSecondaryAction:visited
-{
- padding: 0 1.2em;
- line-height: 2.5;
-}
-ul.dnnActions input
-{
- display: none;
-}
-a.dnnPrimaryAction, a.dnnPrimaryAction:link, a.dnnPrimaryAction:visited, a.dnnSecondaryAction, a.dnnSecondaryAction:link, a.dnnSecondaryAction:visited
-{
- display: inline-block;
-}
-a.dnnPrimaryAction, a.dnnPrimaryAction:link, a.dnnPrimaryAction:visited, .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only
-{
- background: #818181;
- background: -moz-linear-gradient(top, #818181 0%, #656565 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#818181), color-stop(100%,#656565));
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#818181', endColorstr='#656565',GradientType=0 );
- -moz-border-radius: 3px;
- border-radius: 3px;
- text-shadow: 0px 1px 1px #000;
- color: #fff;
- text-decoration: none;
- font-weight: bold;
- border-color: #fff;
-}
-a[disabled].dnnPrimaryAction, a[disabled].dnnPrimaryAction:link, a[disabled].dnnPrimaryAction:visited, a[disabled].dnnPrimaryAction:hover, a[disabled].dnnPrimaryAction:visited:hover, dnnForm.ui-widget-content a[disabled].dnnPrimaryAction
-{
- text-decoration: none;
- color: #bbb;
- background: #818181;
- background: -moz-linear-gradient(top, #818181 0%, #656565 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#818181), color-stop(100%,#656565));
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#818181', endColorstr='#656565',GradientType=0 );
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#818181', endColorstr='#656565',GradientType=0 )";
- cursor: default;
-}
-ul.dnnActions a.dnnPrimaryAction:hover, ul.dnnActions a.dnnPrimaryAction:visited:hover, a.dnnPrimaryAction:hover, .ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-text-only:hover
-{
- background: #4E4E4E;
- background: -moz-linear-gradient(top, #4E4E4E 0%, #282828 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4E4E4E), color-stop(100%,#282828));
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4E4E4E', endColorstr='#282828',GradientType=0 );
- color: #fff;
-}
-ul.dnnActions a.dnnSecondaryAction, ul.dnnActions a.dnnSecondaryAction:link
-{
- font-weight: bold;
- text-decoration: none;
- padding: 0 1em;
-}
-ul.dnnActions a.dnnSecondaryAction:hover, ul.dnnActions a.dnnSecondaryAction:visited:hover
-{
- text-decoration: underline;
- background: none;
- color: inherit;
-}
-a[disabled].dnnSecondaryAction, a[disabled].dnnSecondaryAction:link, a[disabled].dnnSecondaryAction:visited, a[disabled].dnnSecondaryAction:hover, a[disabled].dnnSecondaryAction:visited:hover
-{
- text-decoration: none;
- color: #999;
- cursor: default;
-}
-.dnnForm.ui-widget-content a.dnnPrimaryAction
-{
- color: #fff;
-}
-
-/* section head */
-h2.dnnFormSectionHead
-{
- margin: 0.5em auto 0.6em;
- padding: 0;
- letter-spacing: -0.03em;
- font-weight: bold;
- border-bottom: 1px #ccc solid;
- text-align: left;
- line-height: 1.2;
- font-size: 1.2em;
-}
-.dnnForm h2.dnnFormSectionHead a, .dnnForm h2.dnnFormSectionHead a:visited
-{
- display: block;
- text-decoration: none;
- padding: 0.4em 0.8em;
- color: #000;
- letter-spacing: -0.03em;
- font-weight: bold;
- font-size: 1.2em;
- background: url(down-icn.png) no-repeat 98% center;
- display: block;
-}
-.dnnForm h2.dnnFormSectionHead a:hover
-{
- background: #f1f1f1 url(down-icn.png) no-repeat 98% center;
-}
-.dnnForm h2.dnnFormSectionHead a.dnnSectionExpanded
-{
- background: url(up-icn.png) no-repeat 98% center;
- text-align: left;
-}
-.dnnForm h2.dnnFormSectionHead a.dnnSectionExpanded:hover
-{
- background: #f1f1f1 url(up-icn.png) no-repeat 98% center;
-}
-
-.dnnForm fieldset
-{
- display: block;
- border: none;
- margin: 0;
- text-align: left;
-}
-
- .dnnFormMessage{-moz-border-radius:3px;border-radius:3px;padding:10px 10px 10px 40px;line-height:1.4;margin:0.5em 1em;}
- .dnnFormMessage span{float:none;padding:0;width:100%;text-align:left;text-shadow:0px 1px 1px #fff;}
- .dnnFormWarning{background:#feffce url(warning-icn.png) no-repeat 10px center;border:2px #cdb21f solid;color:#41370C;text-shadow:0px 1px 1px #fff;}
- .dnnFormValidationSummary{background:#f7eaea url(error-icn.png) no-repeat 10px center;text-shadow:0px 1px 1px #fff;color:#900;border:2px #df4a40 solid;}
- .dnnFormError{color:#fff !important;background:url(errorbg.gif) no-repeat left center;text-shadow:0px 1px 1px #000;padding:5px 20px;}
- .dnnFormItem span.dnnFormMessage.dnnFormError{position:absolute;left:55%;top:0;z-index:9999;}
- .dnnFormSuccess{background:#ecffeb url(success-icn.png) no-repeat 10px center;border:2px #64b657 solid;color:#358927}
- .dnnFormInfo{background:#edf8ff url(help-icn.png) no-repeat 10px center;border:#46a3d3 2px solid;color:#085b8f;text-shadow:0px 1px 1px #fff;}
- .dnnFormHelpContent, .dnnFormItem label .dnnFormHelpContent{border:#46a3d3 2px solid;color:#085b8f;background:#edf8ff url(help-icn.png) no-repeat 10px 10px;
- -moz-border-radius:3px;border-radius:3px;text-shadow:0px 1px 1px #fff;font-weight:normal;max-width:30em;padding:0.8em 1em 0.8em 3em;}
- .dnnFormHelpContent, .dnnFormItem .dnnFormHelpContent{left:95%;max-width:30em;position:absolute;z-index:25;width:275px;overflow:hidden;top:0;}
- .dnnFormHelpContent.ui-draggable{cursor:move;}
- .dnnFormHelpContent.dnnClear, .dnnFormItem label.dnnFormLabel .dnnFormHelpContent.dnnClear, .dnnFormItem label .dnnFormHelpContent.dnnClear{line-height:1.4;text-align:left;}
-
- .dnnForm .dnnFormItem.dnnFormHelp, .dnnFormItem.dnnFormHelp{clear:both;overflow:hidden;width:100%;padding:0;}
- .dnnFormItem.dnnFormHelp p.dnnFormRequired{float:right;margin:0;padding:0;}
- .dnnFormItem.dnnFormHelp p.dnnFormRequired span{border-left:5px #F00 solid;padding-left:0.5em;}
diff --git a/Skins/NewsGator_/_images/Chrome-75.png b/Skins/NewsGator_/_images/Chrome-75.png
deleted file mode 100644
index ff12865..0000000
Binary files a/Skins/NewsGator_/_images/Chrome-75.png and /dev/null differ
diff --git a/Skins/NewsGator_/_images/Firefox-75.png b/Skins/NewsGator_/_images/Firefox-75.png
deleted file mode 100644
index 33afc0f..0000000
Binary files a/Skins/NewsGator_/_images/Firefox-75.png and /dev/null differ
diff --git a/Skins/NewsGator_/_images/IE-75.png b/Skins/NewsGator_/_images/IE-75.png
deleted file mode 100644
index 29c8e7e..0000000
Binary files a/Skins/NewsGator_/_images/IE-75.png and /dev/null differ
diff --git a/Skins/NewsGator_/_images/Safari-75.png b/Skins/NewsGator_/_images/Safari-75.png
deleted file mode 100644
index c9d479c..0000000
Binary files a/Skins/NewsGator_/_images/Safari-75.png and /dev/null differ
diff --git a/Skins/NewsGator_/_js/jquery.jcarousel.js b/Skins/NewsGator_/_js/jquery.jcarousel.js
deleted file mode 100644
index beee419..0000000
--- a/Skins/NewsGator_/_js/jquery.jcarousel.js
+++ /dev/null
@@ -1,894 +0,0 @@
-/*!
- * jCarousel - Riding carousels with jQuery
- * http://sorgalla.com/jcarousel/
- *
- * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- *
- * Built on top of the jQuery library
- * http://jquery.com
- *
- * Inspired by the "Carousel Component" by Bill Scott
- * http://billwscott.com/carousel/
- */
-
-(function($) {
- /**
- * Creates a carousel for all matched elements.
- *
- * @example $("#mycarousel").jcarousel();
- * @before
First item
Second item
- * @result
- *
- *
- *
- *
- *
- *
First item
- *
Second item
- *
- *
- *
- *
- *
- *
- *
- * @method jcarousel
- * @return jQuery
- * @param o {Hash|String} A set of key/value pairs to set as configuration properties or a method name to call on a formerly created instance.
- */
- $.fn.jcarousel = function(o) {
- if (typeof o == 'string') {
- var instance = $(this).data('jcarousel'), args = Array.prototype.slice.call(arguments, 1);
- return instance[o].apply(instance, args);
- } else
- return this.each(function() {
- $(this).data('jcarousel', new $jc(this, o));
- });
- };
-
- // Default configuration properties.
- var defaults = {
- vertical: false,
- start: 1,
- offset: 1,
- size: null,
- scroll: 3,
- visible: null,
- animation: 'normal',
- easing: 'swing',
- auto: 0,
- wrap: null,
- initCallback: null,
- reloadCallback: null,
- itemLoadCallback: null,
- itemFirstInCallback: null,
- itemFirstOutCallback: null,
- itemLastInCallback: null,
- itemLastOutCallback: null,
- itemVisibleInCallback: null,
- itemVisibleOutCallback: null,
- buttonNextHTML: '',
- buttonPrevHTML: '',
- buttonNextEvent: 'click',
- buttonPrevEvent: 'click',
- buttonNextCallback: null,
- buttonPrevCallback: null
- };
-
- /**
- * The jCarousel object.
- *
- * @constructor
- * @class jcarousel
- * @param e {HTMLElement} The element to create the carousel for.
- * @param o {Object} A set of key/value pairs to set as configuration properties.
- * @cat Plugins/jCarousel
- */
- $.jcarousel = function(e, o) {
- this.options = $.extend({}, defaults, o || {});
-
- this.locked = false;
-
- this.container = null;
- this.clip = null;
- this.list = null;
- this.buttonNext = null;
- this.buttonPrev = null;
-
- this.wh = !this.options.vertical ? 'width' : 'height';
- this.lt = !this.options.vertical ? 'left' : 'top';
-
- // Extract skin class
- var skin = '', split = e.className.split(' ');
-
- for (var i = 0; i < split.length; i++) {
- if (split[i].indexOf('jcarousel-skin') != -1) {
- $(e).removeClass(split[i]);
- skin = split[i];
- break;
- }
- }
-
- if (e.nodeName == 'UL' || e.nodeName == 'OL') {
- this.list = $(e);
- this.container = this.list.parent();
-
- if (this.container.hasClass('jcarousel-clip')) {
- if (!this.container.parent().hasClass('jcarousel-container'))
- this.container = this.container.wrap('');
-
- this.container = this.container.parent();
- } else if (!this.container.hasClass('jcarousel-container'))
- this.container = this.list.wrap('').parent();
- } else {
- this.container = $(e);
- this.list = this.container.find('ul,ol').eq(0);
- }
-
- if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
- this.container.wrap('');
-
- this.clip = this.list.parent();
-
- if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
- this.clip = this.list.wrap('').parent();
-
- this.buttonNext = $('.jcarousel-next', this.container);
-
- if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
- this.buttonNext = this.clip.after(this.options.buttonNextHTML).next();
-
- this.buttonNext.addClass(this.className('jcarousel-next'));
-
- this.buttonPrev = $('.jcarousel-prev', this.container);
-
- if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
- this.buttonPrev = this.clip.after(this.options.buttonPrevHTML).next();
-
- this.buttonPrev.addClass(this.className('jcarousel-prev'));
-
- this.clip.addClass(this.className('jcarousel-clip')).css({
- overflow: 'hidden',
- position: 'relative'
- });
- this.list.addClass(this.className('jcarousel-list')).css({
- overflow: 'hidden',
- position: 'relative',
- top: 0,
- left: 0,
- margin: 0,
- padding: 0
- });
- this.container.addClass(this.className('jcarousel-container')).css({
- position: 'relative'
- });
-
- var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
- var li = this.list.children('li');
-
- var self = this;
-
- if (li.size() > 0) {
- var wh = 0, i = this.options.offset;
- li.each(function() {
- self.format(this, i++);
- wh += self.dimension(this, di);
- });
-
- this.list.css(this.wh, wh + 'px');
-
- // Only set if not explicitly passed as option
- if (!o || o.size === undefined)
- this.options.size = li.size();
- }
-
- // For whatever reason, .show() does not work in Safari...
- this.container.css('display', 'block');
- this.buttonNext.css('display', 'block');
- this.buttonPrev.css('display', 'block');
-
- this.funcNext = function() { self.next(); };
- this.funcPrev = function() { self.prev(); };
- this.funcResize = function() { self.reload(); };
-
- if (this.options.initCallback != null)
- this.options.initCallback(this, 'init');
-
- if ($.browser.safari) {
- this.buttons(false, false);
- $(window).bind('load.jcarousel', function() { self.setup(); });
- } else
- this.setup();
- };
-
- // Create shortcut for internal use
- var $jc = $.jcarousel;
-
- $jc.fn = $jc.prototype = {
- jcarousel: '0.2.4'
- };
-
- $jc.fn.extend = $jc.extend = $.extend;
-
- $jc.fn.extend({
- /**
- * Setups the carousel.
- *
- * @method setup
- * @return undefined
- */
- setup: function() {
- this.first = null;
- this.last = null;
- this.prevFirst = null;
- this.prevLast = null;
- this.animating = false;
- this.timer = null;
- this.tail = null;
- this.inTail = false;
-
- if (this.locked)
- return;
-
- this.list.css(this.lt, this.pos(this.options.offset) + 'px');
- var p = this.pos(this.options.start);
- this.prevFirst = this.prevLast = null;
- this.animate(p, false);
-
- $(window).unbind('resize.jcarousel', this.funcResize).bind('resize.jcarousel', this.funcResize);
- },
-
- /**
- * Clears the list and resets the carousel.
- *
- * @method reset
- * @return undefined
- */
- reset: function() {
- this.list.empty();
-
- this.list.css(this.lt, '0px');
- this.list.css(this.wh, '10px');
-
- if (this.options.initCallback != null)
- this.options.initCallback(this, 'reset');
-
- this.setup();
- },
-
- /**
- * Reloads the carousel and adjusts positions.
- *
- * @method reload
- * @return undefined
- */
- reload: function() {
- if (this.tail != null && this.inTail)
- this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);
-
- this.tail = null;
- this.inTail = false;
-
- if (this.options.reloadCallback != null)
- this.options.reloadCallback(this);
-
- if (this.options.visible != null) {
- var self = this;
- var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
- $('li', this.list).each(function(i) {
- wh += self.dimension(this, di);
- if (i + 1 < self.first)
- lt = wh;
- });
-
- this.list.css(this.wh, wh + 'px');
- this.list.css(this.lt, -lt + 'px');
- }
-
- this.scroll(this.first, false);
- },
-
- /**
- * Locks the carousel.
- *
- * @method lock
- * @return undefined
- */
- lock: function() {
- this.locked = true;
- this.buttons();
- },
-
- /**
- * Unlocks the carousel.
- *
- * @method unlock
- * @return undefined
- */
- unlock: function() {
- this.locked = false;
- this.buttons();
- },
-
- /**
- * Sets the size of the carousel.
- *
- * @method size
- * @return undefined
- * @param s {Number} The size of the carousel.
- */
- size: function(s) {
- if (s != undefined) {
- this.options.size = s;
- if (!this.locked)
- this.buttons();
- }
-
- return this.options.size;
- },
-
- /**
- * Checks whether a list element exists for the given index (or index range).
- *
- * @method get
- * @return bool
- * @param i {Number} The index of the (first) element.
- * @param i2 {Number} The index of the last element.
- */
- has: function(i, i2) {
- if (i2 == undefined || !i2)
- i2 = i;
-
- if (this.options.size !== null && i2 > this.options.size)
- i2 = this.options.size;
-
- for (var j = i; j <= i2; j++) {
- var e = this.get(j);
- if (!e.length || e.hasClass('jcarousel-item-placeholder'))
- return false;
- }
-
- return true;
- },
-
- /**
- * Returns a jQuery object with list element for the given index.
- *
- * @method get
- * @return jQuery
- * @param i {Number} The index of the element.
- */
- get: function(i) {
- return $('.jcarousel-item-' + i, this.list);
- },
-
- /**
- * Adds an element for the given index to the list.
- * If the element already exists, it updates the inner html.
- * Returns the created element as jQuery object.
- *
- * @method add
- * @return jQuery
- * @param i {Number} The index of the element.
- * @param s {String} The innerHTML of the element.
- */
- add: function(i, s) {
- var e = this.get(i), old = 0, add = 0;
-
- if (e.length == 0) {
- var c, e = this.create(i), j = $jc.intval(i);
- while (c = this.get(--j)) {
- if (j <= 0 || c.length) {
- j <= 0 ? this.list.prepend(e) : c.after(e);
- break;
- }
- }
- } else
- old = this.dimension(e);
-
- e.removeClass(this.className('jcarousel-item-placeholder'));
- typeof s == 'string' ? e.html(s) : e.empty().append(s);
-
- var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
- var wh = this.dimension(e, di) - old;
-
- if (i > 0 && i < this.first)
- this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');
-
- this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');
-
- return e;
- },
-
- /**
- * Removes an element for the given index from the list.
- *
- * @method remove
- * @return undefined
- * @param i {Number} The index of the element.
- */
- remove: function(i) {
- var e = this.get(i);
-
- // Check if item exists and is not currently visible
- if (!e.length || (i >= this.first && i <= this.last))
- return;
-
- var d = this.dimension(e);
-
- if (i < this.first)
- this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');
-
- e.remove();
-
- this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
- },
-
- /**
- * Moves the carousel forwards.
- *
- * @method next
- * @return undefined
- */
- next: function() {
- this.stopAuto();
-
- if (this.tail != null && !this.inTail)
- this.scrollTail(false);
- else
- this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
- },
-
- /**
- * Moves the carousel backwards.
- *
- * @method prev
- * @return undefined
- */
- prev: function() {
- this.stopAuto();
-
- if (this.tail != null && this.inTail)
- this.scrollTail(true);
- else
- this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
- },
-
- /**
- * Scrolls the tail of the carousel.
- *
- * @method scrollTail
- * @return undefined
- * @param b {Boolean} Whether scroll the tail back or forward.
- */
- scrollTail: function(b) {
- if (this.locked || this.animating || !this.tail)
- return;
-
- var pos = $jc.intval(this.list.css(this.lt));
-
- !b ? pos -= this.tail : pos += this.tail;
- this.inTail = !b;
-
- // Save for callbacks
- this.prevFirst = this.first;
- this.prevLast = this.last;
-
- this.animate(pos);
- },
-
- /**
- * Scrolls the carousel to a certain position.
- *
- * @method scroll
- * @return undefined
- * @param i {Number} The index of the element to scoll to.
- * @param a {Boolean} Flag indicating whether to perform animation.
- */
- scroll: function(i, a) {
- if (this.locked || this.animating)
- return;
-
- this.animate(this.pos(i), a);
- },
-
- /**
- * Prepares the carousel and return the position for a certian index.
- *
- * @method pos
- * @return {Number}
- * @param i {Number} The index of the element to scoll to.
- */
- pos: function(i) {
- var pos = $jc.intval(this.list.css(this.lt));
-
- if (this.locked || this.animating)
- return pos;
-
- if (this.options.wrap != 'circular')
- i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);
-
- var back = this.first > i;
-
- // Create placeholders, new list width/height
- // and new list position
- var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
- var c = back ? this.get(f) : this.get(this.last);
- var j = back ? f : f - 1;
- var e = null, l = 0, p = false, d = 0, g;
-
- while (back ? --j >= i : ++j < i) {
- e = this.get(j);
- p = !e.length;
- if (e.length == 0) {
- e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
- c[back ? 'before' : 'after' ](e);
-
- if (this.first != null && this.options.wrap == 'circular' && this.options.size !== null && (j <= 0 || j > this.options.size)) {
- g = this.get(this.index(j));
- if (g.length)
- this.add(j, g.children().clone(true));
- }
- }
-
- c = e;
- d = this.dimension(e);
-
- if (p)
- l += d;
-
- if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
- pos = back ? pos + d : pos - d;
- }
-
- // Calculate visible items
- var clipping = this.clipping();
- var cache = [];
- var visible = 0, j = i, v = 0;
- var c = this.get(i - 1);
-
- while (++visible) {
- e = this.get(j);
- p = !e.length;
- if (e.length == 0) {
- e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
- // This should only happen on a next scroll
- c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
-
- if (this.first != null && this.options.wrap == 'circular' && this.options.size !== null && (j <= 0 || j > this.options.size)) {
- g = this.get(this.index(j));
- if (g.length)
- this.add(j, g.find('>*').clone(true));
- }
- }
-
- c = e;
- var d = this.dimension(e);
- if (d == 0) {
- alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
- return 0;
- }
-
- if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
- cache.push(e);
- else if (p)
- l += d;
-
- v += d;
-
- if (v >= clipping)
- break;
-
- j++;
- }
-
- // Remove out-of-range placeholders
- for (var x = 0; x < cache.length; x++)
- cache[x].remove();
-
- // Resize list
- if (l > 0) {
- this.list.css(this.wh, this.dimension(this.list) + l + 'px');
-
- if (back) {
- pos -= l;
- this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
- }
- }
-
- // Calculate first and last item
- var last = i + visible - 1;
- if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
- last = this.options.size;
-
- if (j > last) {
- visible = 0, j = last, v = 0;
- while (++visible) {
- var e = this.get(j--);
- if (!e.length)
- break;
- v += this.dimension(e);
- if (v >= clipping)
- break;
- }
- }
-
- var first = last - visible + 1;
- if (this.options.wrap != 'circular' && first < 1)
- first = 1;
-
- if (this.inTail && back) {
- pos += this.tail;
- this.inTail = false;
- }
-
- this.tail = null;
- if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
- var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
- if ((v - m) > clipping)
- this.tail = v - clipping - m;
- }
-
- // Adjust position
- while (i-- > first)
- pos += this.dimension(this.get(i));
-
- // Save visible item range
- this.prevFirst = this.first;
- this.prevLast = this.last;
- this.first = first;
- this.last = last;
-
- return pos;
- },
-
- /**
- * Animates the carousel to a certain position.
- *
- * @method animate
- * @return undefined
- * @param p {Number} Position to scroll to.
- * @param a {Boolean} Flag indicating whether to perform animation.
- */
- animate: function(p, a) {
- if (this.locked || this.animating)
- return;
-
- this.animating = true;
-
- var self = this;
- var scrolled = function() {
- self.animating = false;
-
- if (p == 0)
- self.list.css(self.lt, 0);
-
- if (self.options.wrap == 'circular' || self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
- self.startAuto();
-
- self.buttons();
- self.notify('onAfterAnimation');
- };
-
- this.notify('onBeforeAnimation');
-
- // Animate
- if (!this.options.animation || a == false) {
- this.list.css(this.lt, p + 'px');
- scrolled();
- } else {
- var o = !this.options.vertical ? {'left': p} : {'top': p};
- this.list.animate(o, this.options.animation, this.options.easing, scrolled);
- }
- },
-
- /**
- * Starts autoscrolling.
- *
- * @method auto
- * @return undefined
- * @param s {Number} Seconds to periodically autoscroll the content.
- */
- startAuto: function(s) {
- if (s != undefined)
- this.options.auto = s;
-
- if (this.options.auto == 0)
- return this.stopAuto();
-
- if (this.timer != null)
- return;
-
- var self = this;
- this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
- },
-
- /**
- * Stops autoscrolling.
- *
- * @method stopAuto
- * @return undefined
- */
- stopAuto: function() {
- if (this.timer == null)
- return;
-
- clearTimeout(this.timer);
- this.timer = null;
- },
-
- /**
- * Sets the states of the prev/next buttons.
- *
- * @method buttons
- * @return undefined
- */
- buttons: function(n, p) {
- if (n == undefined || n == null) {
- var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
- if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
- n = this.tail != null && !this.inTail;
- }
-
- if (p == undefined || p == null) {
- var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
- if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
- p = this.tail != null && this.inTail;
- }
-
- var self = this;
-
- this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent + '.jcarousel', this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
- this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent + '.jcarousel', this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);
-
- if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
- this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
- this.buttonNext[0].jcarouselstate = n;
- }
-
- if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
- this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
- this.buttonPrev[0].jcarouselstate = p;
- }
- },
-
- /**
- * Notify callback of a specified event.
- *
- * @method notify
- * @return undefined
- * @param evt {String} The event name
- */
- notify: function(evt) {
- var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');
-
- // Load items
- this.callback('itemLoadCallback', evt, state);
-
- if (this.prevFirst !== this.first) {
- this.callback('itemFirstInCallback', evt, state, this.first);
- this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
- }
-
- if (this.prevLast !== this.last) {
- this.callback('itemLastInCallback', evt, state, this.last);
- this.callback('itemLastOutCallback', evt, state, this.prevLast);
- }
-
- this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
- this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
- },
-
- callback: function(cb, evt, state, i1, i2, i3, i4) {
- if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
- return;
-
- var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];
-
- if (!$.isFunction(callback))
- return;
-
- var self = this;
-
- if (i1 === undefined)
- callback(self, state, evt);
- else if (i2 === undefined)
- this.get(i1).each(function() { callback(self, this, i1, state, evt); });
- else {
- for (var i = i1; i <= i2; i++)
- if (i !== null && !(i >= i3 && i <= i4))
- this.get(i).each(function() { callback(self, this, i, state, evt); });
- }
- },
-
- create: function(i) {
- return this.format('', i);
- },
-
- format: function(e, i) {
- var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i)).css({
- 'float': 'left',
- 'list-style': 'none'
- });
- $e.attr('jcarouselindex', i);
- return $e;
- },
-
- className: function(c) {
- return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
- },
-
- dimension: function(e, d) {
- var el = e.jquery != undefined ? e[0] : e;
-
- var old = !this.options.vertical ?
- el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
- el.offsetHeight + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');
-
- if (d == undefined || old == d)
- return old;
-
- var w = !this.options.vertical ?
- d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
- d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');
-
- $(el).css(this.wh, w + 'px');
-
- return this.dimension(el);
- },
-
- clipping: function() {
- return !this.options.vertical ?
- this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
- this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
- },
-
- index: function(i, s) {
- if (s == undefined)
- s = this.options.size;
-
- return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
- }
- });
-
- $jc.extend({
- /**
- * Gets/Sets the global default configuration properties.
- *
- * @method defaults
- * @return {Object}
- * @param d {Object} A set of key/value pairs to set as configuration properties.
- */
- defaults: function(d) {
- return $.extend(defaults, d || {});
- },
-
- margin: function(e, p) {
- if (!e)
- return 0;
-
- var el = e.jquery != undefined ? e[0] : e;
-
- if (p == 'marginRight' && $.browser.safari) {
- var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;
-
- $.swap(el, old, function() { oWidth = el.offsetWidth; });
-
- old['marginRight'] = 0;
- $.swap(el, old, function() { oWidth2 = el.offsetWidth; });
-
- return oWidth2 - oWidth;
- }
-
- return $jc.intval($.css(el, p));
- },
-
- intval: function(v) {
- v = parseInt(v);
- return isNaN(v) ? 0 : v;
- }
- });
-
-})(jQuery);
diff --git a/Skins/NewsGator_/_js/jquery.jcarousel.min.js b/Skins/NewsGator_/_js/jquery.jcarousel.min.js
deleted file mode 100644
index 09d2f92..0000000
--- a/Skins/NewsGator_/_js/jquery.jcarousel.min.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*!
- * jCarousel - Riding carousels with jQuery
- * http://sorgalla.com/jcarousel/
- *
- * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
- * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
- *
- * Built on top of the jQuery library
- * http://jquery.com
- *
- * Inspired by the "Carousel Component" by Bill Scott
- * http://billwscott.com/carousel/
- */
-
-(function($){$.fn.jcarousel=function(o){if(typeof o=='string'){var instance=$(this).data('jcarousel'),args=Array.prototype.slice.call(arguments,1);return instance[o].apply(instance,args);}else
-return this.each(function(){$(this).data('jcarousel',new $jc(this,o));});};var defaults={vertical:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:'normal',easing:'swing',auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:'',buttonPrevHTML:'',buttonNextEvent:'click',buttonPrevEvent:'click',buttonNextCallback:null,buttonPrevCallback:null};$.jcarousel=function(e,o){this.options=$.extend({},defaults,o||{});this.locked=false;this.container=null;this.clip=null;this.list=null;this.buttonNext=null;this.buttonPrev=null;this.wh=!this.options.vertical?'width':'height';this.lt=!this.options.vertical?'left':'top';var skin='',split=e.className.split(' ');for(var i=0;i');this.container=this.container.parent();}else if(!this.container.hasClass('jcarousel-container'))this.container=this.list.wrap('').parent();}else{this.container=$(e);this.list=this.container.find('ul,ol').eq(0);}if(skin!=''&&this.container.parent()[0].className.indexOf('jcarousel-skin')==-1)this.container.wrap('');this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass('jcarousel-clip'))this.clip=this.list.wrap('').parent();this.buttonNext=$('.jcarousel-next',this.container);if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null)this.buttonNext=this.clip.after(this.options.buttonNextHTML).next();this.buttonNext.addClass(this.className('jcarousel-next'));this.buttonPrev=$('.jcarousel-prev',this.container);if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null)this.buttonPrev=this.clip.after(this.options.buttonPrevHTML).next();this.buttonPrev.addClass(this.className('jcarousel-prev'));this.clip.addClass(this.className('jcarousel-clip')).css({overflow:'hidden',position:'relative'});this.list.addClass(this.className('jcarousel-list')).css({overflow:'hidden',position:'relative',top:0,left:0,margin:0,padding:0});this.container.addClass(this.className('jcarousel-container')).css({position:'relative'});var di=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var li=this.list.children('li');var self=this;if(li.size()>0){var wh=0,i=this.options.offset;li.each(function(){self.format(this,i++);wh+=self.dimension(this,di);});this.list.css(this.wh,wh+'px');if(!o||o.size===undefined)this.options.size=li.size();}this.container.css('display','block');this.buttonNext.css('display','block');this.buttonPrev.css('display','block');this.funcNext=function(){self.next();};this.funcPrev=function(){self.prev();};this.funcResize=function(){self.reload();};if(this.options.initCallback!=null)this.options.initCallback(this,'init');if($.browser.safari){this.buttons(false,false);$(window).bind('load.jcarousel',function(){self.setup();});}else
-this.setup();};var $jc=$.jcarousel;$jc.fn=$jc.prototype={jcarousel:'0.2.4'};$jc.fn.extend=$jc.extend=$.extend;$jc.fn.extend({setup:function(){this.first=null;this.last=null;this.prevFirst=null;this.prevLast=null;this.animating=false;this.timer=null;this.tail=null;this.inTail=false;if(this.locked)return;this.list.css(this.lt,this.pos(this.options.offset)+'px');var p=this.pos(this.options.start);this.prevFirst=this.prevLast=null;this.animate(p,false);$(window).unbind('resize.jcarousel',this.funcResize).bind('resize.jcarousel',this.funcResize);},reset:function(){this.list.empty();this.list.css(this.lt,'0px');this.list.css(this.wh,'10px');if(this.options.initCallback!=null)this.options.initCallback(this,'reset');this.setup();},reload:function(){if(this.tail!=null&&this.inTail)this.list.css(this.lt,$jc.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=false;if(this.options.reloadCallback!=null)this.options.reloadCallback(this);if(this.options.visible!=null){var self=this;var di=Math.ceil(this.clipping()/this.options.visible),wh=0,lt=0;$('li',this.list).each(function(i){wh+=self.dimension(this,di);if(i+1this.options.size)i2=this.options.size;for(var j=i;j<=i2;j++){var e=this.get(j);if(!e.length||e.hasClass('jcarousel-item-placeholder'))return false;}return true;},get:function(i){return $('.jcarousel-item-'+i,this.list);},add:function(i,s){var e=this.get(i),old=0,add=0;if(e.length==0){var c,e=this.create(i),j=$jc.intval(i);while(c=this.get(--j)){if(j<=0||c.length){j<=0?this.list.prepend(e):c.after(e);break;}}}else
-old=this.dimension(e);e.removeClass(this.className('jcarousel-item-placeholder'));typeof s=='string'?e.html(s):e.empty().append(s);var di=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var wh=this.dimension(e,di)-old;if(i>0&&i=this.first&&i<=this.last))return;var d=this.dimension(e);if(ithis.options.size?this.options.size:i);var back=this.first>i;var f=this.options.wrap!='circular'&&this.first<=1?1:this.first;var c=back?this.get(f):this.get(this.last);var j=back?f:f-1;var e=null,l=0,p=false,d=0,g;while(back?--j>=i:++jthis.options.size)){g=this.get(this.index(j));if(g.length)this.add(j,g.children().clone(true));}}c=e;d=this.dimension(e);if(p)l+=d;if(this.first!=null&&(this.options.wrap=='circular'||(j>=1&&(this.options.size==null||j<=this.options.size))))pos=back?pos+d:pos-d;}var clipping=this.clipping();var cache=[];var visible=0,j=i,v=0;var c=this.get(i-1);while(++visible){e=this.get(j);p=!e.length;if(e.length==0){e=this.create(j).addClass(this.className('jcarousel-item-placeholder'));c.length==0?this.list.prepend(e):c[back?'before':'after'](e);if(this.first!=null&&this.options.wrap=='circular'&&this.options.size!==null&&(j<=0||j>this.options.size)){g=this.get(this.index(j));if(g.length)this.add(j,g.find('>*').clone(true));}}c=e;var d=this.dimension(e);if(d==0){alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');return 0;}if(this.options.wrap!='circular'&&this.options.size!==null&&j>this.options.size)cache.push(e);else if(p)l+=d;v+=d;if(v>=clipping)break;j++;}for(var x=0;x0){this.list.css(this.wh,this.dimension(this.list)+l+'px');if(back){pos-=l;this.list.css(this.lt,$jc.intval(this.list.css(this.lt))-l+'px');}}var last=i+visible-1;if(this.options.wrap!='circular'&&this.options.size&&last>this.options.size)last=this.options.size;if(j>last){visible=0,j=last,v=0;while(++visible){var e=this.get(j--);if(!e.length)break;v+=this.dimension(e);if(v>=clipping)break;}}var first=last-visible+1;if(this.options.wrap!='circular'&&first<1)first=1;if(this.inTail&&back){pos+=this.tail;this.inTail=false;}this.tail=null;if(this.options.wrap!='circular'&&last==this.options.size&&(last-visible+1)>=1){var m=$jc.margin(this.get(last),!this.options.vertical?'marginRight':'marginBottom');if((v-m)>clipping)this.tail=v-clipping-m;}while(i-->first)pos+=this.dimension(this.get(i));this.prevFirst=this.first;this.prevLast=this.last;this.first=first;this.last=last;return pos;},animate:function(p,a){if(this.locked||this.animating)return;this.animating=true;var self=this;var scrolled=function(){self.animating=false;if(p==0)self.list.css(self.lt,0);if(self.options.wrap=='circular'||self.options.wrap=='both'||self.options.wrap=='last'||self.options.size==null||self.last=this.options.size)n=this.tail!=null&&!this.inTail;}if(p==undefined||p==null){var p=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!='last')||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=='last')&&this.options.size!=null&&this.first==1)p=this.tail!=null&&this.inTail;}var self=this;this.buttonNext[n?'bind':'unbind'](this.options.buttonNextEvent+'.jcarousel',this.funcNext)[n?'removeClass':'addClass'](this.className('jcarousel-next-disabled')).attr('disabled',n?false:true);this.buttonPrev[p?'bind':'unbind'](this.options.buttonPrevEvent+'.jcarousel',this.funcPrev)[p?'removeClass':'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled',p?false:true);if(this.buttonNext.length>0&&(this.buttonNext[0].jcarouselstate==undefined||this.buttonNext[0].jcarouselstate!=n)&&this.options.buttonNextCallback!=null){this.buttonNext.each(function(){self.options.buttonNextCallback(self,this,n);});this.buttonNext[0].jcarouselstate=n;}if(this.buttonPrev.length>0&&(this.buttonPrev[0].jcarouselstate==undefined||this.buttonPrev[0].jcarouselstate!=p)&&this.options.buttonPrevCallback!=null){this.buttonPrev.each(function(){self.options.buttonPrevCallback(self,this,p);});this.buttonPrev[0].jcarouselstate=p;}},notify:function(evt){var state=this.prevFirst==null?'init':(this.prevFirst=i3&&i<=i4))this.get(i).each(function(){callback(self,this,i,state,evt);});}},create:function(i){return this.format('',i);},format:function(e,i){var $e=$(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-'+i)).css({'float':'left','list-style':'none'});$e.attr('jcarouselindex',i);return $e;},className:function(c){return c+' '+c+(!this.options.vertical?'-horizontal':'-vertical');},dimension:function(e,d){var el=e.jquery!=undefined?e[0]:e;var old=!this.options.vertical?el.offsetWidth+$jc.margin(el,'marginLeft')+$jc.margin(el,'marginRight'):el.offsetHeight+$jc.margin(el,'marginTop')+$jc.margin(el,'marginBottom');if(d==undefined||old==d)return old;var w=!this.options.vertical?d-$jc.margin(el,'marginLeft')-$jc.margin(el,'marginRight'):d-$jc.margin(el,'marginTop')-$jc.margin(el,'marginBottom');$(el).css(this.wh,w+'px');return this.dimension(el);},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-$jc.intval(this.clip.css('borderLeftWidth'))-$jc.intval(this.clip.css('borderRightWidth')):this.clip[0].offsetHeight-$jc.intval(this.clip.css('borderTopWidth'))-$jc.intval(this.clip.css('borderBottomWidth'));},index:function(i,s){if(s==undefined)s=this.options.size;return Math.round((((i-1)/s)-Math.floor((i-1)/s))*s)+1;}});$jc.extend({defaults:function(d){return $.extend(defaults,d||{});},margin:function(e,p){if(!e)return 0;var el=e.jquery!=undefined?e[0]:e;if(p=='marginRight'&&$.browser.safari){var old={'display':'block','float':'none','width':'auto'},oWidth,oWidth2;$.swap(el,old,function(){oWidth=el.offsetWidth;});old['marginRight']=0;$.swap(el,old,function(){oWidth2=el.offsetWidth;});return oWidth2-oWidth;}return $jc.intval($.css(el,p));},intval:function(v){v=parseInt(v);return isNaN(v)?0:v;}});})(jQuery);
diff --git a/Skins/NewsGator_/head.txt b/Skins/NewsGator_/head.txt
deleted file mode 100644
index a8bb2d0..0000000
--- a/Skins/NewsGator_/head.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Skins/NewsGator_/iconbar/Layout.html b/Skins/NewsGator_/iconbar/Layout.html
deleted file mode 100644
index 6913ace..0000000
--- a/Skins/NewsGator_/iconbar/Layout.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
- [TABSTRIP]
-
diff --git a/Skins/NewsGator_/iconbar/Script.txt b/Skins/NewsGator_/iconbar/Script.txt
deleted file mode 100644
index 586831c..0000000
--- a/Skins/NewsGator_/iconbar/Script.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-[REQUIRESJQUERY]
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconbar/Settings.xml b/Skins/NewsGator_/iconbar/Settings.xml
deleted file mode 100644
index 0319f79..0000000
--- a/Skins/NewsGator_/iconbar/Settings.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- The number of icons to scroll when left or right indicators are clicked
-
-
- The skin used for the icon bar
-
-
-
-
- The full url to the icon used for the tab image
-
-
-
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconbar/Tab.html b/Skins/NewsGator_/iconbar/Tab.html
deleted file mode 100644
index a665d62..0000000
--- a/Skins/NewsGator_/iconbar/Tab.html
+++ /dev/null
@@ -1 +0,0 @@
-
[TABCAPTION]
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconbar/TabPage.html b/Skins/NewsGator_/iconbar/TabPage.html
deleted file mode 100644
index b8d6903..0000000
--- a/Skins/NewsGator_/iconbar/TabPage.html
+++ /dev/null
@@ -1 +0,0 @@
-[TABPAGECONTENT]
diff --git a/Skins/NewsGator_/iconbar/TabStrip.html b/Skins/NewsGator_/iconbar/TabStrip.html
deleted file mode 100644
index 7f49d92..0000000
--- a/Skins/NewsGator_/iconbar/TabStrip.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/Skins/NewsGator_/iconlinks/Script.txt b/Skins/NewsGator_/iconlinks/Script.txt
deleted file mode 100644
index 586831c..0000000
--- a/Skins/NewsGator_/iconlinks/Script.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-[REQUIRESJQUERY]
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconlinks/Settings.xml b/Skins/NewsGator_/iconlinks/Settings.xml
deleted file mode 100644
index 627fabe..0000000
--- a/Skins/NewsGator_/iconlinks/Settings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- The number of icons to scroll when left or right indicators are clicked
-
-
- The skin used for the icon bar
-
-
-
-
-
-
-
-
-
- The full url to the icon used for the tab image
-
-
- The full url for the icon to link to
-
-
-
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconlinks/Tab.html b/Skins/NewsGator_/iconlinks/Tab.html
deleted file mode 100644
index 0b728be..0000000
--- a/Skins/NewsGator_/iconlinks/Tab.html
+++ /dev/null
@@ -1 +0,0 @@
-
[TABCAPTION]
\ No newline at end of file
diff --git a/Skins/NewsGator_/iconlinks/TabPage.html b/Skins/NewsGator_/iconlinks/TabPage.html
deleted file mode 100644
index b8d6903..0000000
--- a/Skins/NewsGator_/iconlinks/TabPage.html
+++ /dev/null
@@ -1 +0,0 @@
-[TABPAGECONTENT]
diff --git a/Skins/NewsGator_/iconlinks/TabStrip.html b/Skins/NewsGator_/iconlinks/TabStrip.html
deleted file mode 100644
index 7f49d92..0000000
--- a/Skins/NewsGator_/iconlinks/TabStrip.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/Skins/Testing_/JDock/TabStrip.html b/Skins/Testing_/JDock/TabStrip.html
deleted file mode 100644
index acb3171..0000000
--- a/Skins/Testing_/JDock/TabStrip.html
+++ /dev/null
@@ -1 +0,0 @@
-
[TABS]
\ No newline at end of file
diff --git a/Skins/Testing_/JDock/images/Firefoxicon.png b/Skins/Testing_/JDock/images/Firefoxicon.png
deleted file mode 100644
index baebd34..0000000
Binary files a/Skins/Testing_/JDock/images/Firefoxicon.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/IEicon.png b/Skins/Testing_/JDock/images/IEicon.png
deleted file mode 100644
index 27872be..0000000
Binary files a/Skins/Testing_/JDock/images/IEicon.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/Thumbs.db b/Skins/Testing_/JDock/images/Thumbs.db
deleted file mode 100644
index 070bdd2..0000000
Binary files a/Skins/Testing_/JDock/images/Thumbs.db and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/aolicon.png b/Skins/Testing_/JDock/images/aolicon.png
deleted file mode 100644
index 2eb08f1..0000000
Binary files a/Skins/Testing_/JDock/images/aolicon.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/chair.png b/Skins/Testing_/JDock/images/chair.png
deleted file mode 100644
index 83fa6d4..0000000
Binary files a/Skins/Testing_/JDock/images/chair.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/client.png b/Skins/Testing_/JDock/images/client.png
deleted file mode 100644
index 8c1d893..0000000
Binary files a/Skins/Testing_/JDock/images/client.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/edit.png b/Skins/Testing_/JDock/images/edit.png
deleted file mode 100644
index fefcd47..0000000
Binary files a/Skins/Testing_/JDock/images/edit.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/home.png b/Skins/Testing_/JDock/images/home.png
deleted file mode 100644
index eff7d18..0000000
Binary files a/Skins/Testing_/JDock/images/home.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/operaicon.png b/Skins/Testing_/JDock/images/operaicon.png
deleted file mode 100644
index c242a57..0000000
Binary files a/Skins/Testing_/JDock/images/operaicon.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/speaker.png b/Skins/Testing_/JDock/images/speaker.png
deleted file mode 100644
index b8814e9..0000000
Binary files a/Skins/Testing_/JDock/images/speaker.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/tab 1.png b/Skins/Testing_/JDock/images/tab 1.png
deleted file mode 100644
index 83fa6d4..0000000
Binary files a/Skins/Testing_/JDock/images/tab 1.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/tab 2.png b/Skins/Testing_/JDock/images/tab 2.png
deleted file mode 100644
index eff7d18..0000000
Binary files a/Skins/Testing_/JDock/images/tab 2.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/images/tab 3.png b/Skins/Testing_/JDock/images/tab 3.png
deleted file mode 100644
index b8814e9..0000000
Binary files a/Skins/Testing_/JDock/images/tab 3.png and /dev/null differ
diff --git a/Skins/Testing_/JDock/jDock.html b/Skins/Testing_/JDock/jDock.html
deleted file mode 100644
index 077f76e..0000000
--- a/Skins/Testing_/JDock/jDock.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-This is page 1
-
-
-This is page 2
-
-
-This is page 3
-
-
-This is page 4
-
-
-
\ No newline at end of file
diff --git a/Skins/Testing_/JDock/jquery.jqDock.js b/Skins/Testing_/JDock/jquery.jqDock.js
deleted file mode 100644
index b754ba6..0000000
--- a/Skins/Testing_/JDock/jquery.jqDock.js
+++ /dev/null
@@ -1,733 +0,0 @@
-/*
- * jqDock jQuery plugin
- * Version : 1.2
- * Author : Roger Barrett
- * Date : June 2008
- *
- * Inspired by:
- * iconDock jQuery plugin
- * http://icon.cat/software/iconDock
- * version: 0.8 beta
- * date: 2/05/2007
- * Copyright (c) 2007 Isaac Roca & icon.cat (iroca@icon.cat)
- * Dual licensed under the MIT-LICENSE.txt and GPL-LICENSE.txt
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Dual licensed under the MIT-LICENSE.txt and GPL-LICENSE.txt
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Change Log :
- * v1.2
- * - Fixes for Opera v9.5 - many thanks to Rubel Mujica
- * v1.1
- * - some speed optimisation within the functions called by the event handler
- * - added positioning of labels (top/middle/bottom and left/center/right)
- * - added click handler to label (triggers click event on related image)
- * - added jqDockLabel(Link|Image) class to label, depending on type of current image
- * - updated demo and documentation for label positioning and clicking on labels
- */
-;
-(function($){
-if(!$.fn.jqDock){ //can't see why it should be, but it doesn't hurt to check
-
- var jqDock = function(){
- //return an object...
- return {
- version : 1.2
- , defaults : { //can be set at runtime, per menu
- size : 36 //[px] maximum minor axis dimension of image (width or height depending on 'align' : vertical menu = width, horizontal = height)
- , distance : 54 //[px] attenuation distance from cursor
- , coefficient : 1.5 //attenuation coefficient
- , duration : 500 //[ms] duration of initial expansion and off-menu shrinkage
- , align : 'bottom' //[top/middle/bottom or left/center/right] fixes horizontal/vertical expansion axis
- , labels : false //enable/disable display of a label on the current image
- , source : false //function: given context of relevant image element; passed index of image within menu; required to return image source path, or false to use original
- , loader : null //overrides useJqLoader if set to 'image' or 'jquery'
- }
- , useJqLoader : $.browser.opera || $.browser.safari //use jQuery method for loading images, rather than "new Image()" method
- , shrinkInterval : 100 //(ms) the timer interval between each step of the off-menu shrinking
- , docks : [] //array of dock menus
- , X : 0 //mouse position from left
- , Y : 0 //mouse position from top
- //internals to cut down code and ease decision-making (mainly between vertical and horizontal menus)...
- , verthorz : { v: { wh:'height', xy:'Y', tl:'top', lead:'Top', trail:'Bottom', act:'ActualInv' } //Opts.align = left/center/right
- , h: { wh:'width', xy:'X', tl:'left', lead:'Left', trail:'Right', act:'Actual' } //Opts.align = top/middle/bottom
- }
- , elementCss : { position:'relative', borderWidth:0, borderStyle:'none', verticalAlign:'top' }
- , vanillaDiv : '
'
-
- /* initDock()
- * ==========
- * called by the image onload function, it stores and sets image height/width;
- * once all images have been loaded, it completes the setup of the dock menu
- * note: unless all images get loaded, the menu will stay hidden!
- * @context jqDock
- * @param integer (dock index)
- */
- , initDock : function(id){
- //========================================
- var ME = this
- , Dock = this.docks[id] //convenience
- , op = Dock.Opts //convenience
- , off = 0
- , AI = $('a, img', Dock.Menu)
- , i = 0
- , j, el, wh, acc, upad
- , opPre95 = ($.browser.opera && (1*($.browser.version.match(/^(\d+\.\d+)/)||[0,0])[1]) < 9.5) // v1.2 : need to distinguish Opera v9.5
- ;
- // things will screw up if we don't clear text nodes...
- this.removeText(Dock.Menu);
- //set some basic styles on the dock elements, otherwise it won't work
- if(op.orient.vh == 'h'){
- AI.css(this.elementCss);
- if(opPre95 || !$.boxModel){ //Opera (v1.2 : pre v9.5 only), and IE in quirks mode, can't handle floated blocks...
- AI.filter('a').css({lineHeight:0, fontSize:'0px'});
- }else{ //not Opera or IE in quirks mode...
- var hcss = {display:'block'};
- hcss['float'] = 'left'; //don't want any 'reserved word' problems from IE
- AI.filter('img').css(hcss);
- }
- }else{ //vertical docks require a div wrapper around each menu element (v1.2 : set anchors/images to display block)...
- AI.not($('a img', Dock.Menu)).wrap(this.vanillaDiv + '
').end().css(this.elementCss).css({display:'block'});
- }
- //resize each image and store various settings wrt main axis...
- while(i < Dock.Elem.length){
- el = Dock.Elem[i++];
- //resize the image to make the minor axis dimension meet the specified 'Opts.size'...
- wh = this.keepProportion(el, op.size, {vh:op.orient.inv, inv:op.orient.vh}); //inverted!
- el.Actual = el.Final = el.Initial = wh[op.vh.wh];
- el.SizeDiff = el[op.vh.wh] - el.Initial; //on main axis!
- el.Img.css(wh); //resize the image to its new shrunken setting
- //remove titles, alt text...
- el.Img.removeAttr('title').attr({alt:''}).parent('a').removeAttr('title');
- //calculate shrinkage step size
- el.ShrinkStep = Math.floor(el.SizeDiff * this.shrinkInterval / op.duration);
- //use inverts because we're after the minor axis dimension...
- Dock[op.vh.inv.wh] = Math.max(Dock[op.vh.inv.wh], op.size + el.Pad[op.vh.inv.lead] + el.Pad[op.vh.inv.trail]);
-
- el.Offset = off;
- el.Centre = el.Offset + el.Pad[op.vh.lead] + (el.Initial / 2);
- off += el.Initial + el.Pad[op.vh.lead] + el.Pad[op.vh.trail];
- }
-
- //'best guess' at calculating max 'spread' (main axis dimension - horizontal or vertical) of menu:
- //for each img element of the menu, call setSizes() with a forced cursor position of the centre of the image;
- //setSizes() will set each element's Final value, so tally them all, including user-applied padding, to give
- //an overall width/height for this cursor position; set dock width/height to be the largest width/height found
- i = 0;
- while(i < Dock.Elem.length){
- el = Dock.Elem[i++];
- acc = 0; //accumulator for main axis image dimensions
- upad = el.Pad[op.vh.lead] + el.Pad[op.vh.trail]; //user padding in main axis
- //tally the minimum widths...
- Dock.Spread += el.Initial + upad;
- //set sizes with an overridden cursor position...
- this.setSizes(id, el.Centre);
- //tally image widths/heights (plus padding)...
- j = Dock.Elem.length;
- while(j){
- //note that Final is an image dimension (in main axis) and does not include any user padding...
- acc += Dock.Elem[--j].Final + upad;
- }
- //keep largest main axis dock dimension...
- Dock[op.vh.wh] = Math.max(Dock[op.vh.wh], acc);
- }
- //reset Final for each image...
- while(i){
- el = Dock.Elem[--i];
- el.Final = el.Initial;
- }
- var wrap = [ this.vanillaDiv
- , ''
- ].join('');
- Dock.Yard = $(Dock.Menu).wrapInner(wrap).find('div.jqDock');
- //let's see if the user has applied any css border styling to div.jqDock...
- $.each([op.vh.lead, op.vh.trail], function(n, v){
- Dock.Borders[v] = ME.asNumber(Dock.Yard.css('border'+v+'Width'));
- });
- //if div.jqDock has a border we need to shift it a bit so the border doesn't get lost...
- if(Dock.Borders[op.vh.lead]){
- Dock.Yard.css(op.vh.tl, Math.ceil(Dock.Borders[op.vh.lead] / 2));
- }
- //shrink all images down to 'at rest' size, and add appropriate identifying class...
- while(i < Dock.Elem.length){
- el = Dock.Elem[i];
- this.changeSize(id, i, el.Final, true); //force
- el.Img.addClass('jqDockMouse'+id+'_'+(i++));
- }
- //show the menu now...
- $(Dock.Menu).show();
- //now that the menu is visible we can set up labels and get label widths...
- if(Dock.Opts.labels){
- $.each(Dock.Elem, function(i){
- ME.setLabel(id, this.Label);
- });
- Dock.Label.hide();
- }
- //bind a mousehandler to the menu...
- Dock.Yard.bind('mouseover mouseout mousemove', function(e){ ME.mouseHandler(e); });
- } //end function initDock()
-
- /* altImage()
- * ==========
- * tests to see if an image has an alt attribute that looks like an image path, returning it if found, else false
- * note: context of the image element
- * @context DOM element (image)
- * @return string (image path) or false
- */
- , altImage : function(){
- var alt = $(this).attr('alt');
- return (alt && alt.match(/\.(gif|jpg|jpeg|png)$/i)) ? alt : false;
-
- } //end function altImage()
-
- /* removeText()
- * ============
- * removes ALL text nodes from the menu, so that we don't get spacing issues between menu elements
- * note : this includes text within anchors
- * @context jqDock
- * @param DOM element
- * @recursive
- */
- , removeText : function(el){
- //==========================
- var i = el.childNodes.length
- , j
- ;
- while(i){
- j = el.childNodes[--i];
- if(j.childNodes && j.childNodes.length){
- this.removeText(j);
- }else if(j.nodeType == 3){
- el.removeChild(j);
- }
- }
- } //end function removeText()
-
- /* asNumber()
- * ==========
- * returns numeric of leading digits in string argument
- * @context jqDock
- * @param string
- * @return integer
- */
- , asNumber : function(x){
- //=========================
- var r = parseInt(x, 10);
- return isNaN(r) ? 0 : r;
- } //end function asNumber()
-
- /* keepProportion()
- * ================
- * returns an object containing width and height, with the one NOT represented by 'dim'
- * being calculated proportionately
- * if horizontal then attenuation is along vertical (x) axis, thereby setting the new
- * dimension for width, so the one to keep in proportion is height; and vice versa for
- * vertical menus, obviously!
- * @context jqDock
- * @param object (element of elements array)
- * @param integer (image dimension)
- * @param object (dock orientation)
- * @return integer (other image dimension)
- */
- , keepProportion : function(el, dim, orient){
- //===========================================
- var r = {}
- , vh = this.verthorz[orient.vh] //convenience
- , inv = this.verthorz[orient.inv] //convenience
- ;
- r[vh.wh] = dim;
- r[inv.wh] = Math.round(dim * el[inv.wh] / el[vh.wh]);
- return r;
- } //end function keepProportion()
-
- /* deltaXY()
- * =========
- * translates this.X or this.Y into an offset within div.jqDock
- * note: doing it this way means that all attenuation is against the inital (shrunken) image positions,
- * but it saves having to find every image's offset() each time the cursor moves or an image changes size!
- * @context jqDock
- * @param integer (dock index)
- */
- , deltaXY : function(id){
- //=======================
- var Dock = this.docks[id]; //convenience
- if(Dock.Current !== false){
- var op = Dock.Opts //convenience
- , el = Dock.Elem[Dock.Current] //convenience
- , p = el.Pad[op.vh.lead] + el.Pad[op.vh.trail] //element's user-specified padding
- , off = el.Img.offset()
- ;
- //get the difference between the cursor position and the leading edge of the current image,
- //multiply by the full/shrunken ratio, and add the element's pre-calculated offset within div.jqDock...
- Dock.Delta = Math.floor((this[op.vh.xy] - off[op.vh.tl]) * (p + el.Initial) / (p + el.Actual)) + el.Offset;
- this.doLabel(id, off);
- }
- } //end function deltaXY()
-
- /* setLabel()
- * ==========
- * sets up the labels, storing each image's label dimensions
- * @context jqDock
- * @param integer (dock index)
- * @param object (menu element's label settings)
- */
- , setLabel : function(id, label){
- //===============================
- var Dock = this.docks[id] //convenience
- , ME = this
- , pad = {}
- ;
- if(!Dock.Label){ //create the div.jqDockLabel and hide it...
- Dock.Label = $('')
- .hide().bind('click', function(){ Dock.Elem[Dock.Current].Img.trigger('click'); }).appendTo(Dock.Yard);
- }
- if(label.txt){
- //insert the label text for this image, and find any user-styled padding...
- Dock.Label.text(label.txt);
- $.each(['Top', 'Right', 'Bottom', 'Left'], function(n, v){
- pad[v] = ME.asNumber(Dock.Label.css('padding'+v));
- });
- //store the label dimensions for this image...
- $.each(this.verthorz, function(vh, o){
- label[o.wh] = Dock.Label[o.wh]();
- label[o.wh+'Pad'] = pad[o.lead] + pad[o.trail]; //hold padding separately
- });
- }
- } //end function setLabel()
-
- /* doLabel()
- * =========
- * if labels enabled, performs the appropriate action
- * @context jqDock
- * @param integer (dock index)
- * @param string (what action to do) or object (top/left offset of an image)
- */
- , doLabel : function(id, off){
- //============================
- var Dock = this.docks[id]; //convenience
- if(Dock.Opts.labels && Dock.Current !== false){ //only if labels are set and we're over an image
- var el = Dock.Elem[Dock.Current] //convenience
- , L = el.Label //convenience
- , op = Dock.Opts //convenience
- , what = typeof off == 'string' ? off : 'move'
- ;
- switch(what){
- case 'show': case 'hide' : //show or hide...
- Dock.Label[L.txt?what:'hide']();
- break;
- case 'change': //change the label text and set the appropriate dimensions for the current image...
- Dock.Label[0].className = Dock.Label[0].className.replace(/(jqDockLabel)(Link|Image)/, '$1'+(el.Linked ? 'Link' : 'Image'));
- Dock.Label.text(L.txt).css({width:L.width, height:L.height}).hide();
- break;
- default: //move the label...
- //can't avoid extra processing here because we have to get the dock's offsets realtime since simply
- //expanding/shrinking a dock can make scroll bars appear/disappear and thereby affect the dock's position
- var doff = Dock.Yard.offset()
- , css = { top: off.top - doff.top
- , left: off.left - doff.left
- }
- , splt = op.labels.split('')
- ;
- //note: if vertically or horizontally centred then centre is based on the IMAGE only
- //(ie without including padding), otherwise, positioning includes anyimage padding
- if(splt[0] == 'm'){
- css.top += Math.floor((el[op.vh.inv.act] - L.height - L.heightPad) / 2);
- }else if(splt[0] == 'b'){
- css.top += el[op.vh.inv.act] + el.Pad.Top + el.Pad.Bottom - L.height - L.heightPad;
- }
- if(splt[1] == 'c'){
- css.left += Math.floor((el[op.vh.act] - L.width - L.widthPad) / 2);
- }else if(splt[1] == 'r'){
- css.left += el[op.vh.act] + el.Pad.Left + el.Pad.Right - L.width - L.widthPad;
- }
- Dock.Label.css(css);
- }
- }
- } //end function doLabel()
-
- /* mouseHandler()
- * ==============
- * handler for all bound mouse events (move/over/out)
- * note: this handles both image and label events
- * note: when moving within a label Opera reports both a mousemove and a mouseover (presumably because the label has been moved?), but the mouseover does not have a relatedTarget!
- * @context jqDock
- * @param object (event)
- * @return null or false
- */
- , mouseHandler : function(e){
- //===========================
- var r = null
- , t = e.target.className.match(/jqDockMouse(\d+)_(\d+)/)
- //on a mouseout from an image onto a label, Opera reports relatedTarget as existing, but with tagName and className as 'undefined'!...
- , rt = !!(e.relatedTarget) && e.relatedTarget.tagName !== undefined
- ;
- if(t){
- r = false; //prevent the event going any further
- var id = 1*t[1] //convenience
- , Dock = this.docks[id] //convenience
- , idx = t[2] == '00' ? Dock.Current : 1*t[2] //note: label events have _00 suffix on the class name
- ;
- this.X = e.pageX;
- this.Y = e.pageY;
- if(e.type == 'mousemove'){
- if(idx == Dock.Current){ //precedence to mouseover/out processing...
- this.deltaXY(id);
- if(Dock.OnDock && Dock.Expanded){
- this.setSizes(id);
- this.factorSizes(id);
- }
- }
- }else{
- var rel = rt && e.relatedTarget.className.match(/jqDockMouse(\d+)_(\d+)/);
- //only do something on a mouseover if the current menu element has changed...
- if(e.type == 'mouseover' && (!Dock.OnDock || idx !== Dock.Current)){
- Dock.Current = idx;
- this.doLabel(id, 'change');
- this.deltaXY(id);
- if(Dock.Expanded){
- this.doLabel(id, 'show');
- }
- if(rt && (!rel || rel[1] != id)){ //came from outside this menu...
- Dock.Timestamp = (new Date()).getTime();
- this.setSizes(id);
- Dock.OnDock = true;
- this.overDock(id); //sets Expanded when complete
- }
- //only do something on a mouseout if we can tell where we are mousing out to...
- }else if(rt && e.type == 'mouseout'){
- if(!rel || rel[1] != id){ //going outside this menu...
- Dock.OnDock = false;
- this.doLabel(id, 'hide');
- //reset Final dims, per element, to the original (shrunken)...
- var i = Dock.Elem.length;
- while((i--)){
- Dock.Elem[i].Final = Dock.Elem[i].Intial;
- }
- this.offDock(id); //clears Expanded and Current when complete
- }
- }
- }
- }
- return r;
- } //end function mouseHandler()
-
- /* overDock()
- * ==========
- * checks for completed expansion (if OnDock)
- * if not completed, runs setSizes(), factorSizes(), and then itself on a 60ms timer
- * @context jqDock
- * @param integer (dock index)
- */
- , overDock : function(id){
- //========================
- var Dock = this.docks[id]; //convenience
- if(Dock.OnDock){
- var ME = this
- , el = Dock.Elem //convenience
- , i = el.length
- ;
- while((i--) && !(el[i].Actual < el[i].Final)){}
- if(i < 0){ //complete
- Dock.Expanded = true;
- this.deltaXY(id);
- this.doLabel(id, 'show');
- }else{
- this.setSizes(id);
- this.factorSizes(id);
- setTimeout(function(){ ME.overDock(id); }, 60);
- }
- }
- } //end function overDock()
-
- /* offDock()
- * =========
- * called when cursor goes outside menu, and checks for completed shrinking of all menu elements
- * calls changeSize() on any menu element that has not finished shrinking
- * calls itself on a timer to complete the shrinkage
- * @context jqDock
- * @param integer (dock index)
- */
- , offDock : function(id){
- //=======================
- var Dock = this.docks[id]; //convenience
- if(!Dock.OnDock){
- var ME = this
- , done = true
- , i = Dock.Elem.length
- , el, sz
- ;
- while(i){
- el = Dock.Elem[--i];
- if(el.Actual > el.Initial){
- sz = el.Actual - el.ShrinkStep;
- if(sz > el.Initial){
- done = false;
- }else{
- sz = el.Initial;
- }
- this.changeSize(id, i, sz);
- }
- }
- //this is here for no other reason than that Opera leaves a 'shadow' residue of the expanded image unless/until Delta is recalculated!...
- this.deltaXY(id);
- if(done){
- //reset everything back to 'at rest' state...
- while(i < Dock.Elem.length){
- el = Dock.Elem[i++];
- el.Actual = el.Final = el.Initial;
- }
- Dock.Current = Dock.Expanded = false;
- }else{
- setTimeout(function(){ ME.offDock(id); }, this.shrinkInterval);
- }
- }
- } //end function offDock()
-
- /* setSizes()
- * ==========
- * calculates the image sizes according to the current (translated) position of the cursor within div.jqDock
- * result stored in Final for each menu element
- * @context jqDock
- * @param integer (dock index)
- * @param integer (translated cursor offset in main axis)
- */
- , setSizes : function(id, mxy){
- //=============================
- var Dock = this.docks[id] //convenience
- , op = Dock.Opts //convenience
- , i = Dock.Elem.length
- , el, sz
- ;
- mxy = mxy || Dock.Delta; //if not forced, use current translated cursor position (main axis)
- while(i){
- el = Dock.Elem[--i];
- //if we're within the attenuation distance then sz will be less than the difference between the max and min dims
- //if we're smack on or beyond the attenuation distance then set to the min dim
- //note: set sz to an integer number, otherwise we could end up 'fluttering'
- sz = Math.floor(el.SizeDiff * Math.pow(Math.abs(mxy - el.Centre), op.coefficient) / op.attenuation);
- el.Final = (sz < el.SizeDiff ? el[op.vh.wh] - sz : el.Initial);
- }
- } //end function setSizes()
-
- /* factorSizes()
- * =============
- * modifies the target sizes in proportion to 'duration' if still within the 'duration' period following a mouseover
- * calls changeSize() for each menu element (if more than 60ms since mouseover)
- * @context jqDock
- * @param integer (dock index)
- */
- , factorSizes : function(id){
- //===========================
- var Dock = this.docks[id] //convenience
- , op = Dock.Opts //convenience
- , lapse = op.duration + 60
- ;
- if(Dock.Timestamp){
- lapse = (new Date()).getTime() - Dock.Timestamp;
- //Timestamp only gets set on mouseover (onto menu) so there's no point continually checking Date once op.duration has passed...
- if(lapse >= op.duration){
- Dock.Timestamp = 0;
- }
- }
- if(lapse > 60){ //only if more than 60ms have passed since last mouseover
- var f = lapse < op.duration ? lapse / op.duration : 0
- , i = 0 //must go through the elements if logical order
- , el
- ;
- while(i < Dock.Elem.length){
- el = Dock.Elem[i];
- this.changeSize(id, i++, (f ? Math.floor(el.Initial + ((el.Final - el.Initial) * f)) : el.Final));
- }
- }
- } //end function factorSizes()
-
- /* changeSize()
- * ============
- * sets the css for an individual image to effect its change in size
- * 'dim' is the new value for the main axis dimension as specified in Opts.vh.wh, so
- * the margin needs to be applied to the inverse of Opts.vh.wh!
- * note: 'force' is only set when called from initDock() to do the initial shrink
- * @context jqDock
- * @param integer (dock index)
- * @param integer (image index)
- * @param integer (main axis dimension of image)
- * @param boolean
- */
- , changeSize : function(id, idx, dim, force){
- //===========================================
- var Dock = this.docks[id] //convenience
- , el = Dock.Elem[idx] //convenience
- ;
- if(force || el.Actual != dim){
- var op = Dock.Opts //convenience
- //vertical menus, or IE in quirks mode, require border widths (if any) of the Dock to be added to the Dock's main axis dimension...
- , bdr = ($.boxModel || op.orient.vh == 'v') ? 0 : Dock.Borders[op.vh.lead] + Dock.Borders[op.vh.trail]
- ;
- //switch image source to large, if (a) it's different to small source, and (b) this is the first step of an expansion...
- if(el.Source[2] && !force && el.Actual == el.Initial){
- el.Img[0].src = el.Source[1];
- }
- if(Dock.OnDock){
- this.deltaXY(id); //recalculate deltaXY
- }
- Dock.Spread += dim - el.Actual; //adjust main axis dimension of dock
- var css = this.keepProportion(el, dim, op.orient)
- , diff = op.size - css[op.vh.inv.wh]
- , m = 'margin' //convenience
- , z = op.vh.inv //convenience
- ;
- //add minor axis margins according to alignment...
- //note: where diff is an odd number of pixels, for 'middle' or 'center' alignment put the odd pixel in the 'lead' margin
- switch(op.align){
- case 'bottom': case 'right' : css[m+z.lead] = diff; break;
- case 'middle': case 'center' : css[m+z.lead] = (diff + diff%2) / 2; css[m+z.trail] = (diff - diff%2) / 2; break;
- case 'top': case 'left': css[m+z.trail] = diff; break;
- default:
- }
- //set dock's main axis dimension...
- Dock.Yard[op.vh.wh](Dock.Spread + bdr);
- //change image size and margins...
- el.Img.css(css);
- //set dock's main axis 'lead' margin (v1.2: make sure that margin doesn't go negative!)...
- Dock.Yard.css('margin'+op.vh.lead, Math.floor(Math.max(0, (Dock[op.vh.wh] - Dock.Spread) / 2)));
- //store new dimensions...
- el.Actual = dim; //main axis
- el.ActualInv = css[op.vh.inv.wh]; //minor axis
- //switch image source to small, if (a) it's different to large source, and (b) this was the last step of a shrink...
- if(el.Source[2] && !force && el.Actual == el.Initial){
- el.Img[0].src = el.Source[0];
- }
- }
- } //end function changeSize()
- }; //end of return object
- }(); //run the function to set up jqDock
-
- /***************************************************************************************************
- * jQuery.fn.jqDock()
- * ==================
- * usage: $(selector).jqDock(options);
- * options: see jqDock.defaults (top of script)
- *
- * note: the aim is to do as little processing as possible after setup, because everything is
- * driven from the mousemove/over/out events and I don't want to kill the browser if I can help it!
- * hence the code below, and in jqDock.initDock(), sets up and stores everything it possibly can
- * which will avoid extra processing at runtime, and hopefully give as smooth animation as possible.
- ***************************************************************************************************/
- $.fn.jqDock = function(opts){
- return this.filter(function(){
- //check not already set up and has images...
- var i = jqDock.docks.length;
- while((i--) && this != jqDock.docks[i].Menu){}
- return (i < 0) && ($('img', this).length);
- }).hide() //hide it/them
- .each(function(){
- //add an object to the docks array for this new dock...
- var id = jqDock.docks.length;
- jqDock.docks[id] = { Elem : [] // an object per img menu option
- , Menu : this //original containing element
- , OnDock : false //indicates cursor over menu and initial sizes set
- , Expanded : false //indicates completion of initial menu element expansions
- , Timestamp : 0 //set on mouseover and used (within opts.duration) to proportion the menu element sizes
- , width : 0 //width of div.jqDock container
- , height : 0 //height of div.jqDock container
- , Spread : 0 //main axis dimension (horizontal = width, vertical = height)
- , Borders : {} //border widths (main axis) on div.jqDock
- , Yard : false //jQuery of div.jqDock
- , Opts : $.extend({}, jqDock.defaults, opts||{}) //options
- , Current : false //current image index
- , Delta : 0 //X or Y translated into horizontal or vertical offset within div.jqDock as if all images were unexpanded
- , Loaded : 0 //count of images loaded
- , Label : false //jQuery of label container (if Opts.labels is set)
- };
- var Dock = jqDock.docks[id] //convenience
- , op = Dock.Opts //convenience
- ;
- //set up some extra Opts now, just to save some computing power later...
- op.attenuation = Math.pow(op.distance, op.coefficient); //straightforward, static calculation
- op.orient = ({left:1, center:1, right:1}[op.align]) ? {vh:'v', inv:'h'} : {vh:'h', inv:'v'}; //orientation based on 'align' option
- op.vh = $.extend({}, jqDock.verthorz[op.orient.vh], {inv:jqDock.verthorz[op.orient.inv]}); //main and minor axis internals
- op.loader = (op.loader) && typeof op.loader == 'string' && /^image|jquery$/i.test(op.loader) ? op.loader.toLowerCase() : ''; //image loader override
- op.labels = op.labels === true ? {top:'bc',left:'tr',right:'tl'}[op.align] || 'tc' : (typeof op.labels == 'string' && {tl:1,tc:1,tr:1,ml:1,mc:1,mr:1,bl:1,bc:1,br:1}[op.labels] ? op.labels : false);
-
- $('img', this).each(function(n){
- //add an object to the dock's elements array for each image...
- var me = $(this)
- , s0 = me.attr('src') //'small' image source
- , s1 = (op.source ? op.source.call(me[0], n) : false) || jqDock.altImage.call(this) || s0 //'large' image source?
- , tx = op.labels ? me.attr('title') || me.parent('a').attr('title') || '' : '' //label text?
- ;
- Dock.Elem[n] = { Img : me //jQuery of img element
- , Source : [ s0, s1, !(s0 == s1) ] //array : [ small image path, large image path, different? ]
- , Label : { txt: tx, width: 0, height: 0, widthPad: 0, heightPad: 0 } //label text, dimensions, user-applied padding
- , Initial : 0 //width/height when fully shrunk; it's important to note that this is not necessarily the same as Opts.size!
- , Actual : 0 //transitory width/height (main axis)
- , ActualInv : 0 //transitory width/height (minor axis)
- , Final : 0 //target width/height
- , Offset : 0 //offset of 'lead' edge of the image within div.jqDock (including user-padding)
- , Centre : 0 //'Offset' + 'lead' user-padding + half 'Initial' dimension
- , Pad : {} //user-applied padding, set up below
- , Linked : !!me.parent('a').length //image-within-link or not
- , width : 0 //original width of img element (the one that expands)
- , height : 0 //original height of img element (the one that expands)
- };
- $.each(['Top', 'Right', 'Bottom', 'Left'], function(i, v){
- Dock.Elem[n].Pad[v] = jqDock.asNumber(me.css('padding'+v));
- });
- });
- //we have to run a 'loader' function for the images because the expanding image
- //may not be part of the current DOM. what this means though, is that if you
- //have a missing image in your dock, the entire dock will not be displayed!
- //however I've had a few problems with certain browsers: for instance, IE does
- //not like the jQuery method; and Opera was causing me problems with the native
- //method when reloading the page; I've also heard rumours that Safari 2 might cope better with
- //the jQuery method, but I cannot confirm since I no longer have Safari 2.
- //
- //anyway, I'm providing both methods. if anyone finds it doesn't work, try
- //overriding with option.loader, and/or changing jqDock.useJqLoader for the
- //browser in question and let me know if that solves it.
- var jqld = (!op.loader && jqDock.useJqLoader) || op.loader == 'jquery';
- $.each(Dock.Elem, function(i){
- var me = this
- , iLoaded = function(){
- //store 'large' width and height...
- me.height = this.height;
- me.width = this.width;
- if(++Dock.Loaded >= Dock.Elem.length){ //check to see if all images are loaded...
- setTimeout(function(){ jqDock.initDock(id); }, 0);
- }
- }
- ;
- if(jqld){ //jQuery method...
- $('').bind('load', iLoaded).attr({src:this.Source[1]});
- }else{ //native 'new Image()' method...
- var pre = new Image();
- pre.onload = function(){
- iLoaded.call(this);
- pre.onload = function(){}; //wipe out this onload function
- };
- pre.src = this.Source[1];
- }
- });
- })
- .end(); //revert the filter to maintain chaining
- }; //end jQuery.fn.jqDock()
-
- /***************************************************************************************************
- * jQuery.jqDock()
- * ===============
- * usage: $.jqDock(property);
- * returns: the jqDock object's property, or null
- * example: var vsn = $.jqDock('version');
- ***************************************************************************************************/
- $.jqDock = function(x){
- return jqDock[x] ? jqDock[x] : null;
- }; //end jQuery.jqDock()
-} //end of if()
-})(jQuery);
-
diff --git a/Skins/Testing_/JDock/jquery.jqDock.min.js b/Skins/Testing_/JDock/jquery.jqDock.min.js
deleted file mode 100644
index 6a99cc9..0000000
--- a/Skins/Testing_/JDock/jquery.jqDock.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*jQuery plugin : jqDock v1.2 */
-;(function($){if(!$.fn.jqDock){var jqDock=function(){return{version:1.2,defaults:{size:36,distance:54,coefficient:1.5,duration:500,align:'bottom',labels:false,source:false,loader:null},useJqLoader:$.browser.opera||$.browser.safari,shrinkInterval:100,docks:[],X:0,Y:0,verthorz:{v:{wh:'height',xy:'Y',tl:'top',lead:'Top',trail:'Bottom',act:'ActualInv'},h:{wh:'width',xy:'X',tl:'left',lead:'Left',trail:'Right',act:'Actual'}},elementCss:{position:'relative',borderWidth:0,borderStyle:'none',verticalAlign:'top'},vanillaDiv:'
').end().css(this.elementCss).css({display:'block'})}while(i'].join('');Dock.Yard=$(Dock.Menu).wrapInner(wrap).find('div.jqDock');$.each([op.vh.lead,op.vh.trail],function(n,v){Dock.Borders[v]=ME.asNumber(Dock.Yard.css('border'+v+'Width'))});if(Dock.Borders[op.vh.lead]){Dock.Yard.css(op.vh.tl,Math.ceil(Dock.Borders[op.vh.lead]/2))}while(i').hide().bind('click',function(){Dock.Elem[Dock.Current].Img.trigger('click')}).appendTo(Dock.Yard)}if(label.txt){Dock.Label.text(label.txt);$.each(['Top','Right','Bottom','Left'],function(n,v){pad[v]=ME.asNumber(Dock.Label.css('padding'+v))});$.each(this.verthorz,function(vh,o){label[o.wh]=Dock.Label[o.wh]();label[o.wh+'Pad']=pad[o.lead]+pad[o.trail]})}},doLabel:function(id,off){var Dock=this.docks[id];if(Dock.Opts.labels&&Dock.Current!==false){var el=Dock.Elem[Dock.Current],L=el.Label,op=Dock.Opts,what=typeof off=='string'?off:'move';switch(what){case'show':case'hide':Dock.Label[L.txt?what:'hide']();break;case'change':Dock.Label[0].className=Dock.Label[0].className.replace(/(jqDockLabel)(Link|Image)/,'$1'+(el.Linked?'Link':'Image'));Dock.Label.text(L.txt).css({width:L.width,height:L.height}).hide();break;default:var doff=Dock.Yard.offset(),css={top:off.top-doff.top,left:off.left-doff.left},splt=op.labels.split('');if(splt[0]=='m'){css.top+=Math.floor((el[op.vh.inv.act]-L.height-L.heightPad)/2)}else if(splt[0]=='b'){css.top+=el[op.vh.inv.act]+el.Pad.Top+el.Pad.Bottom-L.height-L.heightPad}if(splt[1]=='c'){css.left+=Math.floor((el[op.vh.act]-L.width-L.widthPad)/2)}else if(splt[1]=='r'){css.left+=el[op.vh.act]+el.Pad.Left+el.Pad.Right-L.width-L.widthPad}Dock.Label.css(css)}}},mouseHandler:function(e){var r=null,t=e.target.className.match(/jqDockMouse(\d+)_(\d+)/),rt=!!(e.relatedTarget)&&e.relatedTarget.tagName!==undefined;if(t){r=false;var id=1*t[1],Dock=this.docks[id],idx=t[2]=='00'?Dock.Current:1*t[2];this.X=e.pageX;this.Y=e.pageY;if(e.type=='mousemove'){if(idx==Dock.Current){this.deltaXY(id);if(Dock.OnDock&&Dock.Expanded){this.setSizes(id);this.factorSizes(id)}}}else{var rel=rt&&e.relatedTarget.className.match(/jqDockMouse(\d+)_(\d+)/);if(e.type=='mouseover'&&(!Dock.OnDock||idx!==Dock.Current)){Dock.Current=idx;this.doLabel(id,'change');this.deltaXY(id);if(Dock.Expanded){this.doLabel(id,'show')}if(rt&&(!rel||rel[1]!=id)){Dock.Timestamp=(new Date()).getTime();this.setSizes(id);Dock.OnDock=true;this.overDock(id)}}else if(rt&&e.type=='mouseout'){if(!rel||rel[1]!=id){Dock.OnDock=false;this.doLabel(id,'hide');var i=Dock.Elem.length;while((i--)){Dock.Elem[i].Final=Dock.Elem[i].Intial}this.offDock(id)}}}}return r},overDock:function(id){var Dock=this.docks[id];if(Dock.OnDock){var ME=this,el=Dock.Elem,i=el.length;while((i--)&&!(el[i].Actualel.Initial){sz=el.Actual-el.ShrinkStep;if(sz>el.Initial){done=false}else{sz=el.Initial}this.changeSize(id,i,sz)}}this.deltaXY(id);if(done){while(i=op.duration){Dock.Timestamp=0}}if(lapse>60){var f=lapse=Dock.Elem.length){setTimeout(function(){jqDock.initDock(id)},0)}};if(jqld){$('').bind('load',iLoaded).attr({src:this.Source[1]})}else{var pre=new Image();pre.onload=function(){iLoaded.call(this);pre.onload=function(){}};pre.src=this.Source[1]}})}).end()};$.jqDock=function(x){return jqDock[x]?jqDock[x]:null}}})(jQuery);
-
diff --git a/Skins/Testing_/JDock/styles.css b/Skins/Testing_/JDock/styles.css
deleted file mode 100644
index 1634ba0..0000000
--- a/Skins/Testing_/JDock/styles.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/***************************
-** JQDOCK : EXAMPLE CSS **
-***************************/
-/*place the various demo menus around the screen (note: 1, 3, 4 and 7 are horizontal; 2, 5 and 6 are vertical)...*/
- #menu1 {position:relative; top:100px; padding-left:131px;}
- /*...menu2 needs enough width to show the shrunken images + border, because it's positioned fully to the right...*/
- #menu2 {position:absolute; top:0px; right:0px; width:50px;}
-/* #menu3 {position:; top:152px; padding-left:131px;} */
- #menu4 {position:absolute; top:510px; left:131px;}
- /*if you want to space the images out you can pad them, BUT...
- (a) be aware that for any coefficient other than 1 (linear) this can (will) throw out calculation of the leading edge of the menu
- (b) use a DOCTYPE, otherwise IE will get the spacing wrong
- (c) Opera v9.5 sometimes has problems with the main axis dimension that I haven't managed to solve yet
- for example...*/
- #menu4 img {padding:0px 4px;}
- #menu5 {position:absolute; top:0px; left:0px;}
- /*...menu6 has zero width, so it's actually the left-hand side of the dock that is 200px from the right-hand edge of the viewport...*/
- #menu6 {position:absolute; top:30px; right:200px; width:0px;}
- #menu7 {display:none; position:absolute; top:150px; left:580px;}
-
-/*dock styling...*/
-/*docks (div.jqDock) get absolute position, zero padding and margin, and visible overflow; width and height are calculated*/
- /*...set a default dock background colour...*/
- div.jqDock {background-color:transparent;}
- /*...override background colour and/or border for specific demo docks...*/
- #menu2 div.jqDock {border:2px solid #999999; border-right:0px none;}
- #menu3 div.jqDock {border:2px solid #ff9900;}
- #menu4 div.jqDock {background-color:#cccccc; border:1px solid #000000;}
- #menu5 div.jqDock {background-color:#000000;}
- #menu6 div.jqDock {background-color:#e0e0ff; border:3px solid #0000ff;}
- #menu7 div.jqDock {border:1px solid #0000cc;}
-
-/*label styling...*/
-/*labels (div.jqDockLabel) only get absolute position and zero margin (with top and left being calculated); the rest is up to you*/
- /*...let's set some defaults...*/
- div.jqDockLabel {border:0px none; padding:0px 4px; font-weight:bold; font-size:14px; font-style:italic; white-space:nowrap; color:#000000; background-color:transparent;}
- div.jqDockLabelLink {cursor:pointer;}
- div.jqDockLabelImage {cursor:default;}
- /*...and some overrides...*/
- /*...give the right-hand vertical a smaller, non-bold, deep red label, on a white background...*/
- #menu2 div.jqDockLabel {color:#cc0000; background-color:#ffffff; padding:1px; font-size:12px; font-weight:normal;}
- /*...and the left-hand vertical (with the black background) a white, smaller, label...*/
- #menu5 div.jqDockLabel {color:#ffffff; padding:0px;}
diff --git a/Skins/Testing_/Locked/Layout.html b/Skins/Testing_/Locked/Layout.html
deleted file mode 100644
index 988beba..0000000
--- a/Skins/Testing_/Locked/Layout.html
+++ /dev/null
@@ -1 +0,0 @@
-
[TABSTRIP]
[TABPAGES]
\ No newline at end of file
diff --git a/Skins/Testing_/Locked/Paging.html b/Skins/Testing_/Locked/Paging.html
deleted file mode 100644
index c6ae503..0000000
--- a/Skins/Testing_/Locked/Paging.html
+++ /dev/null
@@ -1 +0,0 @@
-
-Querystring value theme is [QUERYSTRING:theme]
-The # of tabs is [TABCOUNT]
-[IFTABCOUNT VALUE="3"]The tabcount is 3 [/IFTABCOUNT]
-[IFNOTTABCOUNT VALUE="8"]The tabcount is not 8 [/IFNOTTABCOUNT]
-
-
-
[TABSTRIP]
[TABPAGES]
\ No newline at end of file
diff --git a/Skins/Testing_/Top/Paging.html b/Skins/Testing_/Top/Paging.html
deleted file mode 100644
index c6ae503..0000000
--- a/Skins/Testing_/Top/Paging.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Skins/Testing_/liScroll/Script.txt b/Skins/Testing_/liScroll/Script.txt
deleted file mode 100644
index dfc6396..0000000
--- a/Skins/Testing_/liScroll/Script.txt
+++ /dev/null
@@ -1 +0,0 @@
-[REQUIRESJQUERY]
\ No newline at end of file
diff --git a/Skins/Testing_/liScroll/Settings.xml b/Skins/Testing_/liScroll/Settings.xml
deleted file mode 100644
index 5b8f065..0000000
--- a/Skins/Testing_/liScroll/Settings.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
- liScroll - based on jQuery, this content slider can be used with an RSS feed or by adding manual tabs. Read the help tab for specific instructions.
- ]]>
- General features
-
The template is set up for a maximum of 4 items. Each item is made up of a large image (400px by 250px) and a small image (80px by 50px)
-
Using RSS
-
-
set the RSS url to the url of your rss feed
-
set the Max Items for the feed to 4 and/or enclode the rss feed itself to limit itself to 4
-
the large image should be a 400x250 px image enclosure within your feed item
-
the small image will use the same image, but automatically set it's size to the required 80x50 px
-
if you are unsure how to set up your rss feed properly, search the wiki, articles or the online demo for additional help
-
-
Using Manual Tabs
-
-
add up to 4 tabs to the module
-
for each tab, go to the Skin Specific settings tab and add an image url, small image url and a more url
-
- ]]>
-
-
- The fx used for tab page transitions
-
-
-
-
-
-
-
-
- The fx string used for tab page transitions
-
-
-
-
-
-
-
- Check to make the tabs rotate
-
-
- The time in milliseconds between each tab rotation
-
-
- Check to make the tabs continue to rotate after a tab is selected
-
-
-
-
- The url of the large image
-
-
- The url of the small image
-
-
- The url that points to more information about this tab
-
-
-
\ No newline at end of file
diff --git a/Skins/Testing_/liScroll/Tab.html b/Skins/Testing_/liScroll/Tab.html
deleted file mode 100644
index 5efc2fe..0000000
--- a/Skins/Testing_/liScroll/Tab.html
+++ /dev/null
@@ -1,7 +0,0 @@
-[IFRSS]
-
\ No newline at end of file
diff --git a/Skins/Testing_/liScroll/styles.css b/Skins/Testing_/liScroll/styles.css
deleted file mode 100644
index c56309a..0000000
--- a/Skins/Testing_/liScroll/styles.css
+++ /dev/null
@@ -1,44 +0,0 @@
-.Testing__liScroll_container { /* the outer div with the black border */
-border: 1px solid #000;
-background: #fff;
-width: 738px;
-height: 27px;
-margin: 0;
-padding: 0
-overflow: hidden;
-}
-.Testing__liScroll_container .mask { /* that serves as a mask. so you get a sort of padding both left and right */
-position: relative;
-left: 10px;
-top: 8px;
-width: 718px;
-overflow: hidden;
-}
-ul.newsticker { /* that's your list */
-position: relative;
-left: 750px;
-font: bold 10px Verdana;
-list-style-type: none;
-margin: 0;
-padding: 0;
-
-}
-ul.newsticker li {
-float: left; /* important: display inline gives incorrect results when you check for elem's width */
-margin: 0;
-padding: 0;
-background: #fff;
-list-style-type:none;
-}
-ul.newsticker a {
-white-space: nowrap;
-padding: 0;
-color: #ff0000;
-font: bold 10px Verdana;
-margin: 0 50px 0 0;
-}
-ul.newsticker span {
-margin: 0 10px 0 0;
-}
-
-
diff --git a/UploadSkin.ascx.vb b/UploadSkin.ascx.vb
index ce7c13e..2195898 100644
--- a/UploadSkin.ascx.vb
+++ b/UploadSkin.ascx.vb
@@ -1,16 +1,3 @@
-'***************************************************************************/
-'* UploadSkin.ascx.vb
-'*
-'* COPYRIGHT (c) 2004 by DNNStuff
-'* ALL RIGHTS RESERVED.
-'*
-'* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-'* TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-'* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-'* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-'* DEALINGS IN THE SOFTWARE.
-'*************/
-
Imports System
Imports System.Configuration
Imports System.Data
@@ -46,11 +33,7 @@ Namespace DNNStuff.Aggregator
End Sub
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- If DNNUtilities.SafeDNNVersion().Major = 5 Then
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit_5.css"))
- Else
- DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
- End If
+ DNNUtilities.InjectCSS(Me.Page, ResolveUrl("Resources/Support/edit.css"))
Page.ClientScript.RegisterClientScriptInclude(Me.GetType, "yeti", ResolveUrl("resources/support/yetii-min.js"))
End Sub
diff --git a/Version/All/License.html b/Version/All/License.html
index 95fde3f..11f6b50 100644
--- a/Version/All/License.html
+++ b/Version/All/License.html
@@ -1,83 +1,21 @@
-
-DNNSTUFF LICENSE
-END-USER LICENSE AGREEMENT FOR 'AGGREGATOR MODULE'.
-IMPORTANT PLEASE READ THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT CAREFULLY BEFORE CONTINUING WITH THIS PROGRAM INSTALL: DNNSTUFF's End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and DNNSTUFF. For the DNNSTUFF software product(s) identified above which may include associated software components, media, printed materials, and "online" or electronic documentation ("SOFTWARE PRODUCT"). By installing, copying, or otherwise using the SOFTWARE PRODUCT, you agree to be bound by the terms of this EULA. This license agreement represents the entire agreement concerning the program between you and DNNSTUFF, (referred to as "licenser"), and it supersedes any prior proposal, representation, or understanding between the parties. If you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT.
-
-
-
-The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
-
-
-
-1. GRANT OF LICENSE.
-
-The SOFTWARE PRODUCT is licensed as follows:
-
-(a) Installation and Use.
-
-DNNSTUFF grants you the right to install and use copies of the SOFTWARE PRODUCT on a single instance of your DotNetNuke site, as well as a development or staging site. If you purchased an ENTERPRISE license then you may install and use copies of the SOFTWARE PRODUCT on any DotNetNuke sites belonging to or used by your organization.
-
-(b) Backup Copies.
-
-You may also make copies of the SOFTWARE PRODUCT as may be necessary for backup and archival purposes.
-
-
-
-2. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
-
-(a) Maintenance of Copyright Notices.
-
-You must not remove or alter any copyright notices on any and all copies of the SOFTWARE PRODUCT.
-
-(b) Distribution.
-
-You may not distribute registered copies of the SOFTWARE PRODUCT to third parties. Evaluation versions available for download from DNNSTUFF's websites may be freely distributed.
-
-(c) Prohibition on Reverse Engineering, Decompilation, and Disassembly.
-
-You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.
-
-(d) Rental.
-
-You may not rent, lease, or lend the SOFTWARE PRODUCT.
-
-(e) Support Services.
-
-DNNSTUFF may provide you with support services related to the SOFTWARE PRODUCT ("Support Services"). Any supplemental software code provided to you as part of the Support Services shall be considered part of the SOFTWARE PRODUCT and subject to the terms and conditions of this EULA.
-
-(f) Compliance with Applicable Laws.
-
-You must comply with all applicable laws regarding use of the SOFTWARE PRODUCT.
-
-
-
-3. TERMINATION
-
-Without prejudice to any other rights, DNNSTUFF may terminate this EULA if you fail to comply with the terms and conditions of this EULA. In such event, you must destroy all copies of the SOFTWARE PRODUCT in your possession.
-
-
-
-4. COPYRIGHT
-
-All title, including but not limited to copyrights, in and to the SOFTWARE PRODUCT and any copies thereof are owned by DNNSTUFF or its suppliers. All title and intellectual property rights in and to the content which may be accessed through use of the SOFTWARE PRODUCT is the property of the respective content owner and may be protected by applicable copyright or other intellectual property laws and treaties. This EULA grants you no rights to use such content. All rights not expressly granted are reserved by DNNSTUFF.
-
-
-
-5. NO WARRANTIES
-
-DNNSTUFF expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT is provided 'As Is' without any express or implied warranty of any kind, including but not limited to any warranties of merchantability, noninfringement, or fitness of a particular purpose. DNNSTUFF does not warrant or assume responsibility for the accuracy or completeness of any information, text, graphics, links or other items contained within the SOFTWARE PRODUCT. DNNSTUFF makes no warranties respecting any harm that may be caused by the transmission of a computer virus, worm, time bomb, logic bomb, or other such computer program. DNNSTUFF further expressly disclaims any warranty or representation to Authorized Users or to any third party.
-
-
-
-6. LIMITATION OF LIABILITY
-
-In no event shall DNNSTUFF be liable for any damages (including, without limitation, lost profits, business interruption, or lost information) rising out of 'Authorized Users' use of or inability to use the SOFTWARE PRODUCT, even if DNNSTUFF has been advised of the possibility of such damages. In no event will DNNSTUFF be liable for loss of data or for indirect, special, incidental, consequential (including lost profit), or other damages based in contract, tort or otherwise. DNNSTUFF shall have no liability with respect to the content of the SOFTWARE PRODUCT or any part thereof, including but not limited to errors or omissions contained therein, libel, infringements of rights of publicity, privacy, trademark rights, business interruption, personal injury, loss of privacy, moral rights or the disclosure of confidential information.
-
-
-
-7. CONTACT INFORMATION
-
-If you have any questions about this EULA, or if you want to contact
-DNNSTUFF for any reason, please direct all correspondence to:
-DNNSTUFF, 4078 Old Hwy 2, Belleville, Ontario, CANADA, K8N 4Z4 or email support@dnnstuff.com
-
\ No newline at end of file
+MIT License
+
+Copyright (c) 2017 Richard Edwards
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/Version/All/Release.html b/Version/All/Release.html
new file mode 100644
index 0000000..c67504f
--- /dev/null
+++ b/Version/All/Release.html
@@ -0,0 +1 @@
+You can view the release history on the github repository page here, 06.05.01
-
diff --git a/Version/All/Version_Current.md b/Version/All/Version_Current.md
deleted file mode 100644
index 583e5ee..0000000
--- a/Version/All/Version_Current.md
+++ /dev/null
@@ -1,12 +0,0 @@
-
-## 06.05.01
-
-14/Jun/2016
-
-
-* Fixes
- * Fixed a bug in DNN8 when hiding container of embedded modules
-
-
-
-For additional release history please visit the [documentation](http://docs.dnnstuff.com/pages/aggregator).
diff --git a/Version/All/aggregator.dnn b/Version/All/aggregator.dnn
index 41f8abe..c9dab90 100644
--- a/Version/All/aggregator.dnn
+++ b/Version/All/aggregator.dnn
@@ -15,7 +15,7 @@
-
+ true05.02.03
diff --git a/Version/Documentation/Index.html.md b/Version/Documentation/Index.html.md
deleted file mode 100644
index d9885ae..0000000
--- a/Version/Documentation/Index.html.md
+++ /dev/null
@@ -1,45 +0,0 @@
-```
-title: Aggregator
-tags: ['intro','page']
-topNav: true
-topNavOrder: 1
-```
-
-## About
-
-The Aggregator module is a DotNetNuke module capable of showing any number of
-tabs, each tab with any number of modules within it. In addition to
-modules, each tab can display it's own html text before the modules. You
-can include this text in a tab without showing any modules at all if you
-wish, which effectively turns the Aggregator module into a tabbed html
-text module. The html text displayed in the tab is fully indexed by the
-internal DNN search mechanism as well.
-
-## Release History
-
-* [View the Release History](Releases)
-
-## General Topics
-
-* [Installation](Installation)
-* [Configuration](Configuration)
-* [Upload Skins](UploadSkins)
-
-## Advanced Topics
-
-* [Skins & Templates & Tokens](Templates)
-* [Selecting Tabs](SelectingTabs)
-* [Token Replacement in Content and Captions](TabCaptionReplacement)
-* [Localization](Localization)
-* [Module Wrapping](ModuleWrapping)
-
-## How Tos
-
-* [Nesting Tabs](Nesting)
-
-## Other
-
-- [Aggregator Page](http://www.dnnstuff.com/Modules/AggregatorTabbedModules/tabid/207/Default.aspx?utm_source=dnnstuff&utm_medium=wiki&utm_campaign=aggregator)
-- [Aggregator Demos](http://www.dnnstuff.com/Modules/AggregatorTabbedModules/AggregatorDemos/tabid/322/language/en-US/Default.aspx?utm_source=dnnstuff&utm_medium=wiki&utm_campaign=aggregator)
-- [Purchase Aggregator](http://www.dnnstuff.com/store.aspx?utm_source=dnnstuff&utm_medium=wiki&utm_campaign=aggregator)
-
diff --git a/dnnstuff.aggregator.xml b/dnnstuff.aggregator.xml
deleted file mode 100644
index 80ebecf..0000000
--- a/dnnstuff.aggregator.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- DNNStuff.Aggregator
- 4.0.2.0
- DNNStuff.Aggregator, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
-
-
-
\ No newline at end of file
diff --git a/Version/Documentation/Configuration.html.md b/docs/configuration.md
similarity index 100%
rename from Version/Documentation/Configuration.html.md
rename to docs/configuration.md
diff --git a/Version/Documentation/images/Install - Browse.Png b/docs/images/Install - Browse.Png
similarity index 100%
rename from Version/Documentation/images/Install - Browse.Png
rename to docs/images/Install - Browse.Png
diff --git a/Version/Documentation/images/ModuleWrapping_Html.jpg b/docs/images/ModuleWrapping_Html.jpg
similarity index 100%
rename from Version/Documentation/images/ModuleWrapping_Html.jpg
rename to docs/images/ModuleWrapping_Html.jpg
diff --git a/Version/Documentation/images/ModuleWrapping_Result.jpg b/docs/images/ModuleWrapping_Result.jpg
similarity index 100%
rename from Version/Documentation/images/ModuleWrapping_Result.jpg
rename to docs/images/ModuleWrapping_Result.jpg
diff --git a/Version/Documentation/images/ModuleWrapping_Tokens.jpg b/docs/images/ModuleWrapping_Tokens.jpg
similarity index 100%
rename from Version/Documentation/images/ModuleWrapping_Tokens.jpg
rename to docs/images/ModuleWrapping_Tokens.jpg
diff --git a/Version/Documentation/images/SkinFolder.jpg b/docs/images/SkinFolder.jpg
similarity index 100%
rename from Version/Documentation/images/SkinFolder.jpg
rename to docs/images/SkinFolder.jpg
diff --git a/Version/Documentation/images/SkinStructure.png b/docs/images/SkinStructure.png
similarity index 100%
rename from Version/Documentation/images/SkinStructure.png
rename to docs/images/SkinStructure.png
diff --git a/Version/Documentation/images/Style Settings.png b/docs/images/Style Settings.png
similarity index 100%
rename from Version/Documentation/images/Style Settings.png
rename to docs/images/Style Settings.png
diff --git a/Version/Documentation/images/Tab Settings.png b/docs/images/Tab Settings.png
similarity index 100%
rename from Version/Documentation/images/Tab Settings.png
rename to docs/images/Tab Settings.png
diff --git a/Version/Documentation/images/TabAnatomy.gif b/docs/images/TabAnatomy.gif
similarity index 100%
rename from Version/Documentation/images/TabAnatomy.gif
rename to docs/images/TabAnatomy.gif
diff --git a/Version/Documentation/images/Target Settings.png b/docs/images/Target Settings.png
similarity index 100%
rename from Version/Documentation/images/Target Settings.png
rename to docs/images/Target Settings.png
diff --git a/Version/Documentation/images/UploadSkin.png b/docs/images/UploadSkin.png
similarity index 100%
rename from Version/Documentation/images/UploadSkin.png
rename to docs/images/UploadSkin.png
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..8709f15
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,34 @@
+# Aggregator Documentation
+
+## About
+
+The Aggregator module is a DotNetNuke module capable of showing any number of
+tabs, each tab with any number of modules within it. In addition to
+modules, each tab can display it's own html text before the modules. You
+can include this text in a tab without showing any modules at all if you
+wish, which effectively turns the Aggregator module into a tabbed html
+text module. The html text displayed in the tab is fully indexed by the
+internal DNN search mechanism as well.
+
+## Release History
+
+* [View the Release History](releases)
+
+## General Topics
+
+* [Installation](installation)
+* [Configuration](configuration)
+* [Upload Skins](uploadskins)
+
+## Advanced Topics
+
+* [Skins & Templates & Tokens](templates)
+* [Selecting Tabs](selectingtabs)
+* [Token Replacement in Content and Captions](tabcaptionreplacement)
+* [Localization](]localization)
+* [Module Wrapping](modulewrapping)
+
+## How Tos
+
+* [Nesting Tabs](nesting)
+
diff --git a/Version/Documentation/Installation.html.md b/docs/installation.md
similarity index 100%
rename from Version/Documentation/Installation.html.md
rename to docs/installation.md
diff --git a/Version/Documentation/Localization.html.md b/docs/localization.md
similarity index 100%
rename from Version/Documentation/Localization.html.md
rename to docs/localization.md
diff --git a/Version/Documentation/ModuleWrapping.html.md b/docs/modulewrapping.md
similarity index 100%
rename from Version/Documentation/ModuleWrapping.html.md
rename to docs/modulewrapping.md
diff --git a/Version/Documentation/Nesting.html.md b/docs/nesting.md
similarity index 100%
rename from Version/Documentation/Nesting.html.md
rename to docs/nesting.md
diff --git a/Version/Documentation/Releases.html.md b/docs/releases.md
similarity index 100%
rename from Version/Documentation/Releases.html.md
rename to docs/releases.md
diff --git a/Version/Documentation/SelectingTabs.html.md b/docs/selectingtabs.md
similarity index 100%
rename from Version/Documentation/SelectingTabs.html.md
rename to docs/selectingtabs.md
diff --git a/Version/Documentation/TabCaptionReplacement.html.md b/docs/tabcaptionreplacement.md
similarity index 100%
rename from Version/Documentation/TabCaptionReplacement.html.md
rename to docs/tabcaptionreplacement.md
diff --git a/Version/Documentation/Templates.html.md b/docs/templates.md
similarity index 100%
rename from Version/Documentation/Templates.html.md
rename to docs/templates.md
diff --git a/Version/Documentation/UploadSkins.html.md b/docs/uploadskins.md
similarity index 100%
rename from Version/Documentation/UploadSkins.html.md
rename to docs/uploadskins.md
diff --git a/packages.config b/packages.config
new file mode 100644
index 0000000..54c8d7a
--- /dev/null
+++ b/packages.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/refs/DNNStuff.Utilities.dll b/refs/DNNStuff.Utilities.dll
new file mode 100644
index 0000000..12874c1
Binary files /dev/null and b/refs/DNNStuff.Utilities.dll differ
diff --git a/Version/All/RssToolkit.dll b/refs/RssToolkit.dll
similarity index 100%
rename from Version/All/RssToolkit.dll
rename to refs/RssToolkit.dll
diff --git a/refs/SharpZipLib.dll b/refs/SharpZipLib.dll
new file mode 100644
index 0000000..b7e439f
Binary files /dev/null and b/refs/SharpZipLib.dll differ