[Rt-commit] rt branch, 4.2/static-handler, created. rt-4.1.5-159-gf23af02

Alex Vandiver alexmv at bestpractical.com
Wed Dec 26 15:01:00 EST 2012


The branch, 4.2/static-handler has been created
        at  f23af020355a7604c5db76269f09cc269db83926 (commit)

- Log -----------------------------------------------------------------
commit a215fb3f2aa0888f8184d35afca09aa511890108
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon May 16 14:14:24 2011 +0800

    Add a share/static directory

diff --git a/Makefile.in b/Makefile.in
index 28450fa..9db52cf 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -108,11 +108,13 @@ RT_VAR_PATH		=	@RT_VAR_PATH_R@
 RT_DOC_PATH		=	@RT_DOC_PATH_R@
 RT_FONT_PATH		=	@RT_FONT_PATH_R@
 RT_LEXICON_PATH		=	@RT_LEXICON_PATH_R@
+RT_STATIC_PATH		=	@RT_STATIC_PATH_R@
 RT_LOCAL_PATH		=	@RT_LOCAL_PATH_R@
 LOCAL_PLUGIN_PATH	=	@RT_LOCAL_PATH_R@/plugins
 LOCAL_ETC_PATH		=	@LOCAL_ETC_PATH_R@
 LOCAL_LIB_PATH		=	@LOCAL_LIB_PATH_R@
 LOCAL_LEXICON_PATH	=	@LOCAL_LEXICON_PATH_R@
+LOCAL_STATIC_PATH	=	@LOCAL_STATIC_PATH_R@
 MASON_HTML_PATH		=	@MASON_HTML_PATH_R@
 MASON_LOCAL_HTML_PATH	=	@MASON_LOCAL_HTML_PATH_R@
 MASON_DATA_PATH		=	@MASON_DATA_PATH_R@
@@ -303,15 +305,21 @@ fixperms:
 	chmod -R  u+rwX,go-w,go+rX 	$(DESTDIR)$(MASON_HTML_PATH) \
 					$(DESTDIR)$(MASON_LOCAL_HTML_PATH) \
 					$(DESTDIR)$(RT_LEXICON_PATH) \
-					$(DESTDIR)$(LOCAL_LEXICON_PATH)
+					$(DESTDIR)$(LOCAL_LEXICON_PATH) \
+					$(DESTDIR)$(RT_STATIC_PATH) \
+					$(DESTDIR)$(LOCAL_STATIC_PATH)
 	chown -R $(LIBS_OWNER) 	$(DESTDIR)$(MASON_HTML_PATH) \
 				$(DESTDIR)$(MASON_LOCAL_HTML_PATH) \
 				$(DESTDIR)$(RT_LEXICON_PATH) \
-				$(DESTDIR)$(LOCAL_LEXICON_PATH)
+				$(DESTDIR)$(LOCAL_LEXICON_PATH) \
+				$(DESTDIR)$(RT_STATIC_PATH) \
+				$(DESTDIR)$(LOCAL_STATIC_PATH)
 	chgrp -R $(LIBS_GROUP) 	$(DESTDIR)$(MASON_HTML_PATH) \
 				$(DESTDIR)$(MASON_LOCAL_HTML_PATH) \
 				$(DESTDIR)$(RT_LEXICON_PATH) \
-				$(DESTDIR)$(LOCAL_LEXICON_PATH)
+				$(DESTDIR)$(LOCAL_LEXICON_PATH) \
+				$(DESTDIR)$(RT_STATIC_PATH) \
+				$(DESTDIR)$(LOCAL_STATIC_PATH)
 
 	# Make the web ui's data dir writable
 	chmod 0770  	$(DESTDIR)$(MASON_DATA_PATH) \
@@ -325,6 +333,7 @@ dirs:
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(RT_LOG_PATH)
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(RT_FONT_PATH)
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(RT_LEXICON_PATH)
+	$(INSTALL) -m 0755 -d $(DESTDIR)$(RT_STATIC_PATH)
 	$(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH)
 	$(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH)/cache
 	$(INSTALL) -m 0770 -d $(DESTDIR)$(MASON_DATA_PATH)/etc
@@ -336,10 +345,11 @@ dirs:
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_LIB_PATH)
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_PLUGIN_PATH)
 	$(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_LEXICON_PATH)
+	$(INSTALL) -m 0755 -d $(DESTDIR)$(LOCAL_STATIC_PATH)
 
 install: testdeps config-install dirs files-install fixperms instruct
 
-files-install: libs-install etc-install config-install bin-install sbin-install html-install local-install doc-install font-install po-install
+files-install: libs-install etc-install config-install bin-install sbin-install html-install local-install doc-install font-install po-install static-install
 
 config-install:
 @COMMENT_INPLACE_LAYOUT@	$(INSTALL) -m 0755 -o $(BIN_OWNER) -g $(RTGROUP) -d $(DESTDIR)$(CONFIG_FILE_PATH)
@@ -406,6 +416,14 @@ po-install:
 @COMMENT_INPLACE_LAYOUT@	    $(INSTALL) -m 0644 "share/po/$$file" "$(DESTDIR)$(RT_LEXICON_PATH)/$$file" ; \
 @COMMENT_INPLACE_LAYOUT@	done
 
+static-install:
+ at COMMENT_INPLACE_LAYOUT@	[ -d $(DESTDIR)$(RT_STATIC_PATH) ] || $(INSTALL) -m 0755 -d $(DESTDIR)$(RT_STATIC_PATH)
+ at COMMENT_INPLACE_LAYOUT@	-( cd share/static && find . -type d -print ) | while read dir ; do \
+ at COMMENT_INPLACE_LAYOUT@	    $(INSTALL) -m 0755 -d "$(DESTDIR)$(RT_STATIC_PATH)/$$dir" ; \
+ at COMMENT_INPLACE_LAYOUT@	done
+ at COMMENT_INPLACE_LAYOUT@	-( cd share/static && find . -type f -print ) | while read file ; do \
+ at COMMENT_INPLACE_LAYOUT@	    $(INSTALL) -m 0644 "share/static/$$file" "$(DESTDIR)$(RT_STATIC_PATH)/$$file" ; \
+ at COMMENT_INPLACE_LAYOUT@	done
 
 
 doc-install:
@@ -455,6 +473,12 @@ local-install:
 	-( cd local/po && find . -type f -print ) | while read file ; do \
 	    $(INSTALL) -m 0644 "local/po/$$file" "$(DESTDIR)$(LOCAL_LEXICON_PATH)/$$file" ; \
 	done
+	-( cd local/static && find . -type d -print ) | while read dir ; do \
+	    $(INSTALL) -m 0755 -d "$(DESTDIR)$(LOCAL_STATIC_PATH)/$$dir" ; \
+	done
+	-( cd local/static && find . -type f -print ) | while read file ; do \
+	    $(INSTALL) -m 0644 "local/static/$$file" "$(DESTDIR)$(LOCAL_STATIC_PATH)/$$file" ; \
+	done
 	-( cd local/etc && find . -type d -print ) | while read dir ; do \
 	    $(INSTALL) -m 0755 -d "$(DESTDIR)$(LOCAL_ETC_PATH)/$$dir" ; \
 	done
diff --git a/aclocal.m4 b/aclocal.m4
index d427e13..793644f 100755
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -91,9 +91,9 @@ AC_DEFUN([RT_LAYOUT],[
 			changequote({,})
 			for var in prefix exec_prefix bindir sbindir \
 				 sysconfdir mandir libdir datadir htmldir fontdir\
-				 lexdir localstatedir logfiledir masonstatedir \
+				 lexdir staticdir localstatedir logfiledir masonstatedir \
 				 sessionstatedir customdir custometcdir customhtmldir \
-				 customlexdir customplugindir customlibdir manualdir; do
+				 customlexdir customstaticdir customplugindir customlibdir manualdir; do
 				eval "val=\"\$$var\""
 				val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
 				val=`echo $val | 
@@ -114,6 +114,7 @@ AC_DEFUN([RT_LAYOUT],[
 	RT_SUBST_EXPANDED_ARG(mandir)
 	RT_SUBST_EXPANDED_ARG(libdir)
 	RT_SUBST_EXPANDED_ARG(lexdir)
+	RT_SUBST_EXPANDED_ARG(staticdir)
 	RT_SUBST_EXPANDED_ARG(datadir)
 	RT_SUBST_EXPANDED_ARG(htmldir)
 	RT_SUBST_EXPANDED_ARG(fontdir)
@@ -128,6 +129,7 @@ AC_DEFUN([RT_LAYOUT],[
 	RT_SUBST_EXPANDED_ARG(customplugindir)
 	RT_SUBST_EXPANDED_ARG(customhtmldir)
 	RT_SUBST_EXPANDED_ARG(customlexdir)
+	RT_SUBST_EXPANDED_ARG(customstaticdir)
 	RT_SUBST_EXPANDED_ARG(customlibdir)
 ])dnl
 
diff --git a/config.layout b/config.layout
index e356e7f..decebae 100755
--- a/config.layout
+++ b/config.layout
@@ -11,7 +11,7 @@
 ##  The following variables must _all_ be set:
 ##	prefix exec_prefix bindir sbindir sysconfdir mandir libdir
 ##	datadir htmldir localstatedir logfiledir masonstatedir fontdir
-##	sessionstatedir customdir customhtmldir customlexdir
+##	sessionstatedir customdir customhtmldir customlexdir customstaticdir
 ##  (This can be seen in m4/rt_layout.m4.)
 ##
 
@@ -29,6 +29,7 @@
   htmldir:		${datadir}/html
   fontdir:		${datadir}/fonts
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   manualdir:		${prefix}/docs
   localstatedir:	${prefix}/var
   logfiledir:		${localstatedir}/log
@@ -38,6 +39,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -53,6 +55,7 @@
   datadir:		${prefix}/share
   htmldir:		${datadir}/html
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   fontdir:		${datadir}/fonts
   manualdir:		${prefix}/docs
   localstatedir:	${prefix}/var
@@ -63,6 +66,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -81,6 +85,7 @@
   plugindir:		${datadir}/plugins
   htmldir:		${datadir}/html
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   fontdir:		${datadir}/fonts
   manualdir:		${datadir}/doc
   localstatedir:	/var
@@ -92,6 +97,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -108,6 +114,7 @@
   datadir:		${prefix}/share+
   htmldir:		${datadir}/html
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   fontdir:		${datadir}/fonts
   manualdir:		${prefix}/share/doc+
   logfiledir:		/var/log
@@ -118,6 +125,7 @@
   custometcdir:		${customdir}/local/etc
   customhtmldir:	${customdir}/local/html
   customlexdir:		${customdir}/local/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/local/lib
   customplugindir:  ${customdir}/local/plugins
 </Layout>
@@ -135,6 +143,7 @@
   htmldir:		${datadir}/html
   fontdir:		${datadir}/fonts
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   manualdir:		${datadir}/doc
   localstatedir:	${prefix}/var
   logfiledir:		${localstatedir}/log
@@ -144,6 +153,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -161,6 +171,7 @@
   htmldir:		${datadir}/html
   fontdir:		${datadir}/fonts
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   manualdir:		${datadir}/doc
   plugindir:		${datadir}/plugins
   localstatedir:	/var
@@ -171,6 +182,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -189,6 +201,7 @@
   htmldir:		${datadir}/html
   fontdir:		${datadir}/fonts
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   manualdir:	docs
   localstatedir:	var
   logfiledir:		${localstatedir}/log
@@ -198,6 +211,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
@@ -214,6 +228,7 @@
   htmldir:		${datadir}/html
   fontdir:		${datadir}/fonts
   lexdir:		${datadir}/po
+  staticdir:	${datadir}/static
   manualdir:	docs/rt
   localstatedir:	var/rt/
   logfiledir:		${localstatedir}/log
@@ -223,6 +238,7 @@
   custometcdir:		${customdir}/etc
   customhtmldir:	${customdir}/html
   customlexdir:		${customdir}/po
+  customstaticdir:	${customdir}/static
   customlibdir:		${customdir}/lib
   customplugindir:  ${customdir}/plugins
 </Layout>
diff --git a/configure.ac b/configure.ac
index ce35320..ee56d62 100755
--- a/configure.ac
+++ b/configure.ac
@@ -336,6 +336,7 @@ AC_SUBST([RT_DOC_PATH],			${exp_manualdir})
 AC_SUBST([RT_LOCAL_PATH],		${exp_customdir})
 AC_SUBST([RT_LIB_PATH],			${exp_libdir})
 AC_SUBST([RT_LEXICON_PATH],			${exp_lexdir})
+AC_SUBST([RT_STATIC_PATH],			${exp_staticdir})
 AC_SUBST([RT_ETC_PATH],			${exp_sysconfdir})
 AC_SUBST([CONFIG_FILE_PATH],		${exp_sysconfdir})
 AC_SUBST([RT_BIN_PATH],			${exp_bindir})
@@ -350,6 +351,7 @@ AC_SUBST([MASON_HTML_PATH],		${exp_htmldir})
 AC_SUBST([LOCAL_ETC_PATH],		${exp_custometcdir})
 AC_SUBST([MASON_LOCAL_HTML_PATH],	${exp_customhtmldir})
 AC_SUBST([LOCAL_LEXICON_PATH],		${exp_customlexdir})
+AC_SUBST([LOCAL_STATIC_PATH],		${exp_customstaticdir})
 AC_SUBST([LOCAL_LIB_PATH],		${exp_customlibdir})
 AC_SUBST([LOCAL_PLUGIN_PATH],		${exp_customplugindir})
 AC_SUBST([RT_LOG_PATH],			${exp_logfiledir})
@@ -367,6 +369,7 @@ AC_SUBST([RT_VAR_PATH_R],			${exp_prefix}/${exp_localstatedir})
 AC_SUBST([RT_MAN_PATH_R],			${exp_prefix}/${exp_mandir})
 AC_SUBST([RT_FONT_PATH_R],			${exp_prefix}/${exp_fontdir})
 AC_SUBST([RT_LEXICON_PATH_R],			${exp_prefix}/${exp_lexdir})
+AC_SUBST([RT_STATIC_PATH_R],			${exp_prefix}/${exp_staticdir})
 AC_SUBST([RT_PLUGIN_PATH_R],		${exp_prefix}/${exp_plugindir})
 AC_SUBST([MASON_DATA_PATH_R],		${exp_prefix}/${exp_masonstatedir})
 AC_SUBST([MASON_SESSION_PATH_R],		${exp_prefix}/${exp_sessionstatedir})
@@ -374,6 +377,7 @@ AC_SUBST([MASON_HTML_PATH_R],		${exp_prefix}/${exp_htmldir})
 AC_SUBST([LOCAL_ETC_PATH_R],		${exp_prefix}/${exp_custometcdir})
 AC_SUBST([MASON_LOCAL_HTML_PATH_R],	${exp_prefix}/${exp_customhtmldir})
 AC_SUBST([LOCAL_LEXICON_PATH_R],		${exp_prefix}/${exp_customlexdir})
+AC_SUBST([LOCAL_STATIC_PATH_R],		${exp_prefix}/${exp_customstaticdir})
 AC_SUBST([LOCAL_LIB_PATH_R],		${exp_prefix}/${exp_customlibdir})
 AC_SUBST([LOCAL_PLUGIN_PATH_R],		${exp_prefix}/${exp_customplugindir})
 AC_SUBST([RT_LOG_PATH_R],			${exp_prefix}/${exp_logfiledir})
@@ -383,6 +387,7 @@ AC_SUBST([RT_DOC_PATH_R],			${exp_manualdir})
 AC_SUBST([RT_LOCAL_PATH_R],		${exp_customdir})
 AC_SUBST([RT_LIB_PATH_R],			${exp_libdir})
 AC_SUBST([RT_LEXICON_PATH_R],			${exp_lexdir})
+AC_SUBST([RT_STATIC_PATH_R],			${exp_staticdir})
 AC_SUBST([RT_ETC_PATH_R],			${exp_sysconfdir})
 AC_SUBST([RT_PLUGIN_PATH_R],		${exp_plugindir})
 AC_SUBST([CONFIG_FILE_PATH_R],		${exp_sysconfdir})
@@ -397,6 +402,7 @@ AC_SUBST([MASON_HTML_PATH_R],		${exp_htmldir})
 AC_SUBST([LOCAL_ETC_PATH_R],		${exp_custometcdir})
 AC_SUBST([MASON_LOCAL_HTML_PATH_R],	${exp_customhtmldir})
 AC_SUBST([LOCAL_LEXICON_PATH_R],		${exp_customlexdir})
+AC_SUBST([LOCAL_STATIC_PATH_R],		${exp_customstaticdir})
 AC_SUBST([LOCAL_PLUGIN_PATH_R],		${exp_customplugindir})
 AC_SUBST([LOCAL_LIB_PATH_R],		${exp_customlibdir})
 AC_SUBST([RT_LOG_PATH_R],			${exp_logfiledir})
diff --git a/lib/RT.pm b/lib/RT.pm
index fd4415d..e50c627 100644
--- a/lib/RT.pm
+++ b/lib/RT.pm
@@ -63,11 +63,13 @@ use vars qw($BasePath
  $SbinPath
  $VarPath
  $LexiconPath
+ $StaticPath
  $PluginPath
  $LocalPath
  $LocalEtcPath
  $LocalLibPath
  $LocalLexiconPath
+ $LocalStaticPath
  $LocalPluginPath
  $MasonComponentRoot
  $MasonLocalComponentRoot
@@ -731,9 +733,9 @@ sub CanonicalizeGeneratedPaths {
         $BasePath = Cwd::realpath($BasePath);
 
         for my $path (
-                    qw/EtcPath BinPath SbinPath VarPath LocalPath LocalEtcPath
+                    qw/EtcPath BinPath SbinPath VarPath LocalPath StaticPath LocalEtcPath
                     LocalLibPath LexiconPath LocalLexiconPath PluginPath
-                    LocalPluginPath MasonComponentRoot MasonLocalComponentRoot
+                    LocalPluginPath LocalStaticPath MasonComponentRoot MasonLocalComponentRoot
                     MasonDataDir MasonSessionDir/
                      )
         {
diff --git a/lib/RT/Generated.pm.in b/lib/RT/Generated.pm.in
index ac15bde..f95fe73 100644
--- a/lib/RT/Generated.pm.in
+++ b/lib/RT/Generated.pm.in
@@ -60,11 +60,13 @@ $BinPath = '@RT_BIN_PATH@';
 $SbinPath = '@RT_SBIN_PATH@';
 $VarPath = '@RT_VAR_PATH@';
 $LexiconPath = '@RT_LEXICON_PATH@';
+$StaticPath = '@RT_STATIC_PATH@';
 $PluginPath = '@RT_PLUGIN_PATH@';
 $LocalPath = '@RT_LOCAL_PATH@';
 $LocalEtcPath = '@LOCAL_ETC_PATH@';
 $LocalLibPath        =    '@LOCAL_LIB_PATH@';
 $LocalLexiconPath = '@LOCAL_LEXICON_PATH@';
+$LocalStaticPath = '@LOCAL_STATIC_PATH@';
 $LocalPluginPath = '@LOCAL_PLUGIN_PATH@';
 # $MasonComponentRoot is where your rt instance keeps its mason html files
 $MasonComponentRoot = '@MASON_HTML_PATH@';

commit 180345185336aa805d1ef8f6f4b44d39349c68c2
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:48:22 2012 -0500

    Adjust closing brace location for sanity
    
    Previously, the definition of _psgi_response_cb lay _inside_ of the
    PSGIApp function, due to an extra '}' hidden in the former, and a
    missing '}' in the latter.  Because package functions aren't lexically
    scoped, this worked.

diff --git a/lib/RT/Interface/Web/Handler.pm b/lib/RT/Interface/Web/Handler.pm
index 466a83d..053a6cd 100644
--- a/lib/RT/Interface/Web/Handler.pm
+++ b/lib/RT/Interface/Web/Handler.pm
@@ -269,7 +269,8 @@ sub PSGIApp {
                                         sub {
                                             $self->CleanupRequest()
                                         });
-};
+    };
+}
 
 sub _psgi_response_cb {
     my $self = shift;
@@ -293,7 +294,6 @@ sub _psgi_response_cb {
                      return $_[0];
                  };
              });
-    }
 }
 
 1;

commit bb5df82ed85a0ae0f8a315a094538c9cbf0cbb73
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:21:45 2012 -0500

    Add a core static handler for /static/
    
    This directory will contain files, such as images, which should not be
    run through Mason, and were previously under /NoAuth/.

diff --git a/lib/RT/Interface/Web/Handler.pm b/lib/RT/Interface/Web/Handler.pm
index 053a6cd..0714233 100644
--- a/lib/RT/Interface/Web/Handler.pm
+++ b/lib/RT/Interface/Web/Handler.pm
@@ -215,6 +215,7 @@ sub HTML::Mason::Exception::as_rt_error {
 
 use RT::Interface::Web::Handler;
 use CGI::Emulate::PSGI;
+use Plack::Builder;
 use Plack::Request;
 use Plack::Response;
 use Plack::Util;
@@ -230,7 +231,9 @@ sub PSGIApp {
 
     $self->InitSessionDir;
 
-    return sub {
+    my $builder = Plack::Builder->new();
+
+    my $mason = sub {
         my $env = shift;
         RT::ConnectToDatabase() unless RT->InstallMode;
 
@@ -270,6 +273,17 @@ sub PSGIApp {
                                             $self->CleanupRequest()
                                         });
     };
+
+    my @system_static = ($RT::LocalStaticPath, $RT::StaticPath);
+    for my $root (grep {$_ and -d $_} @system_static) {
+        $builder->add_middleware(
+            'Plack::Middleware::Static',
+            path         => sub { s!^/static/!! },
+            root         => $root,
+            pass_through => 1,
+        );
+    }
+    return $builder->to_app($mason);
 }
 
 sub _psgi_response_cb {

commit e3f793c3ec24bf45470e2a39c47a6582c9a1da72
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:23:29 2012 -0500

    Static directories for plugins

diff --git a/lib/RT/Interface/Web/Handler.pm b/lib/RT/Interface/Web/Handler.pm
index 0714233..a612cd1 100644
--- a/lib/RT/Interface/Web/Handler.pm
+++ b/lib/RT/Interface/Web/Handler.pm
@@ -274,7 +274,13 @@ sub PSGIApp {
                                         });
     };
 
-    my @system_static = ($RT::LocalStaticPath, $RT::StaticPath);
+
+    my @system_static;
+    for my $plugin ( @{RT->Plugins} ) {
+        my $dir = $plugin->StaticDir;
+        push @system_static, $dir if -d $dir;
+    }
+    push @system_static, $RT::LocalStaticPath, $RT::StaticPath;
     for my $root (grep {$_ and -d $_} @system_static) {
         $builder->add_middleware(
             'Plack::Middleware::Static',
diff --git a/lib/RT/Plugin.pm b/lib/RT/Plugin.pm
index 10eb837..d66ee81 100644
--- a/lib/RT/Plugin.pm
+++ b/lib/RT/Plugin.pm
@@ -90,7 +90,7 @@ Takes a name of sub directory and returns its full path, for example:
 
     my $plugin_etc_dir = $plugin->Path('etc');
 
-See also L</ComponentRoot>, L</PoDir> and other shortcut methods.
+See also L</ComponentRoot>, L</StaticDir>, L</PoDir> and other shortcut methods.
 
 =cut
 
@@ -120,6 +120,14 @@ Returns the directory this plugin has installed its L<HTML::Mason> templates int
 
 sub ComponentRoot { return $_[0]->Path('html') }
 
+=head2 StaticDir
+
+Returns the directory this plugin has installed its static files into
+
+=cut
+
+sub StaticDir { return $_[0]->Path('static') }
+
 =head2 PoDir
 
 Returns the directory this plugin has installed its message catalogs into.

commit 7125922225b6a0c13628a98c5f353c554478605a
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:24:08 2012 -0500

    Allow for arbitrary extra static roots

diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index e78786f..6eb5ad1 100755
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -127,6 +127,26 @@ C<Set(@Plugins, (qw(Extension::QuickDelete RT::Extension::CommandByMail)));>
 
 Set(@Plugins, ());
 
+=item C<@StaticRoots>
+
+Set C<@StaticRoots> to serve extra paths with a static handler.  The
+contents of each hashref should be the the same arguments as
+L<Plack::Middleware::Static> takes.  These paths will be checked before
+any plugin or core static paths.
+
+Example:
+
+    Set( @StaticRoots,
+        {
+            path => qr{^/static/},
+            root => '/local/path/to/static/parent',
+        },
+    );
+
+=cut
+
+Set( @StaticRoots, () );
+
 =back
 
 
diff --git a/lib/RT/Interface/Web/Handler.pm b/lib/RT/Interface/Web/Handler.pm
index a612cd1..d8bf65e 100644
--- a/lib/RT/Interface/Web/Handler.pm
+++ b/lib/RT/Interface/Web/Handler.pm
@@ -275,6 +275,22 @@ sub PSGIApp {
     };
 
 
+    for my $static ( RT->Config->Get('StaticRoots') ) {
+        if ( ref $static && ref $static eq 'HASH' ) {
+            if ( ref $static eq 'HASH' ) {
+                $builder->add_middleware(
+                    'Plack::Middleware::Static',
+                    pass_through => 1,
+                    %$static
+                );
+            }
+        }
+        else {
+            $RT::Logger->error(
+                "Invalid config StaticRoots: item can only be a hashref" );
+        }
+    }
+
     my @system_static;
     for my $plugin ( @{RT->Plugins} ) {
         my $dir = $plugin->StaticDir;

commit e20bf9b8fafbdb767f84a9315fd2cec9d219e3b9
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri May 13 14:43:12 2011 +0800

    Move files to under share/static, removing now-useless dhandler and autohandlers

diff --git a/share/html/NoAuth/RichText/dhandler b/share/html/NoAuth/RichText/dhandler
deleted file mode 100644
index 97fad75..0000000
--- a/share/html/NoAuth/RichText/dhandler
+++ /dev/null
@@ -1,69 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%INIT>
-use File::Basename;
-my $arg = $m->dhandler_arg;
-my $file = dirname($m->current_comp->source_file) . '/ckeditor/' . $arg;
-return $m->decline unless -f $file && -r _;
-
-my $suffix = $1 if $file =~ /([^.]+)$/;
-
-my $type = {qw(
-    xml     text/xml
-    html    text/html
-    js      application/javascript
-    css     text/css
-    gif     image/gif
-    jpg     image/jpeg
-    png     image/png
-)}->{$suffix} || 'application/octet-stream';
-
-RT::Interface::Web->SendStaticFile( File => $file, Type => $type );
-
-$m->abort;
-</%INIT>
diff --git a/share/html/NoAuth/css/aileron/images/dhandler b/share/html/NoAuth/css/aileron/images/dhandler
deleted file mode 100644
index 834765c..0000000
--- a/share/html/NoAuth/css/aileron/images/dhandler
+++ /dev/null
@@ -1,55 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%INIT>
-use File::Basename;
-my $arg = $m->dhandler_arg;
-my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
-RT::Interface::Web->SendStaticFile( File => $file );
-
-$m->abort;
-</%INIT>
diff --git a/share/html/NoAuth/css/ballard/images/dhandler b/share/html/NoAuth/css/ballard/images/dhandler
deleted file mode 100644
index 834765c..0000000
--- a/share/html/NoAuth/css/ballard/images/dhandler
+++ /dev/null
@@ -1,55 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%INIT>
-use File::Basename;
-my $arg = $m->dhandler_arg;
-my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
-RT::Interface::Web->SendStaticFile( File => $file );
-
-$m->abort;
-</%INIT>
diff --git a/share/html/NoAuth/css/web2/images/dhandler b/share/html/NoAuth/css/web2/images/dhandler
deleted file mode 100644
index 834765c..0000000
--- a/share/html/NoAuth/css/web2/images/dhandler
+++ /dev/null
@@ -1,55 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%INIT>
-use File::Basename;
-my $arg = $m->dhandler_arg;
-my $file = dirname($m->current_comp->source_file) . '/source/'. $arg;
-RT::Interface::Web->SendStaticFile( File => $file );
-
-$m->abort;
-</%INIT>
diff --git a/share/html/NoAuth/images/autohandler b/share/html/NoAuth/images/autohandler
deleted file mode 100644
index 2a33964..0000000
--- a/share/html/NoAuth/images/autohandler
+++ /dev/null
@@ -1,55 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
-%#                                          <sales at bestpractical.com>
-%#
-%# (Except where explicitly superseded by other copyright notices)
-%#
-%#
-%# LICENSE:
-%#
-%# This work is made available to you under the terms of Version 2 of
-%# the GNU General Public License. A copy of that license should have
-%# been provided with this software, but in any event can be snarfed
-%# from www.gnu.org.
-%#
-%# This work is distributed in the hope that it will be useful, but
-%# WITHOUT ANY WARRANTY; without even the implied warranty of
-%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-%# General Public License for more details.
-%#
-%# You should have received a copy of the GNU General Public License
-%# along with this program; if not, write to the Free Software
-%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-%# 02110-1301 or visit their web page on the internet at
-%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%#
-%#
-%# CONTRIBUTION SUBMISSION POLICY:
-%#
-%# (The following paragraph is not intended to limit the rights granted
-%# to you to modify and distribute this software under the terms of
-%# the GNU General Public License and is only of importance to you if
-%# you choose to contribute your changes and enhancements to the
-%# community by submitting them to Best Practical Solutions, LLC.)
-%#
-%# By intentionally submitting any modifications, corrections or
-%# derivatives to this work, or any other work intended for use with
-%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
-%# you are the copyright holder for those contributions and you grant
-%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
-%# royalty-free, perpetual, license to use, copy, create derivative
-%# works based on those contributions, and sublicense and distribute
-%# those contributions and any derivatives thereof.
-%#
-%# END BPS TAGGED BLOCK }}}
-<%INIT>
-# This autohandler will spit out RT's images if the user hasn't 
-# properly configured their webserver to stop RT from passing 
-# images through the mason handler.
-my $file = $m->base_comp->source_file;
-my $relfile = $m->base_comp->path;
-RT::Interface::Web->SendStaticFile( File => $file, RelativeFile => $relfile );
-</%INIT>
diff --git a/share/html/NoAuth/RichText/ckeditor/LICENSE.html b/share/static/RichText/LICENSE.html
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/LICENSE.html
rename to share/static/RichText/LICENSE.html
diff --git a/share/html/NoAuth/RichText/ckeditor/adapters/jquery.js b/share/static/RichText/adapters/jquery.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/adapters/jquery.js
rename to share/static/RichText/adapters/jquery.js
diff --git a/share/html/NoAuth/RichText/ckeditor/ckeditor.js b/share/static/RichText/ckeditor.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/ckeditor.js
rename to share/static/RichText/ckeditor.js
diff --git a/share/html/NoAuth/RichText/ckeditor/config.js b/share/static/RichText/config.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/config.js
rename to share/static/RichText/config.js
diff --git a/share/html/NoAuth/RichText/ckeditor/contents.css b/share/static/RichText/contents.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/contents.css
rename to share/static/RichText/contents.css
diff --git a/share/html/NoAuth/RichText/ckeditor/images/spacer.gif b/share/static/RichText/images/spacer.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/images/spacer.gif
rename to share/static/RichText/images/spacer.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/_languages.js b/share/static/RichText/lang/_languages.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/_languages.js
rename to share/static/RichText/lang/_languages.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt b/share/static/RichText/lang/_translationstatus.txt
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/_translationstatus.txt
rename to share/static/RichText/lang/_translationstatus.txt
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/af.js b/share/static/RichText/lang/af.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/af.js
rename to share/static/RichText/lang/af.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ar.js b/share/static/RichText/lang/ar.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ar.js
rename to share/static/RichText/lang/ar.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/bg.js b/share/static/RichText/lang/bg.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/bg.js
rename to share/static/RichText/lang/bg.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/bn.js b/share/static/RichText/lang/bn.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/bn.js
rename to share/static/RichText/lang/bn.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/bs.js b/share/static/RichText/lang/bs.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/bs.js
rename to share/static/RichText/lang/bs.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ca.js b/share/static/RichText/lang/ca.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ca.js
rename to share/static/RichText/lang/ca.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/cs.js b/share/static/RichText/lang/cs.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/cs.js
rename to share/static/RichText/lang/cs.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/cy.js b/share/static/RichText/lang/cy.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/cy.js
rename to share/static/RichText/lang/cy.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/da.js b/share/static/RichText/lang/da.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/da.js
rename to share/static/RichText/lang/da.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/de.js b/share/static/RichText/lang/de.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/de.js
rename to share/static/RichText/lang/de.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/el.js b/share/static/RichText/lang/el.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/el.js
rename to share/static/RichText/lang/el.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/en-au.js b/share/static/RichText/lang/en-au.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/en-au.js
rename to share/static/RichText/lang/en-au.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/en-ca.js b/share/static/RichText/lang/en-ca.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/en-ca.js
rename to share/static/RichText/lang/en-ca.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/en-gb.js b/share/static/RichText/lang/en-gb.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/en-gb.js
rename to share/static/RichText/lang/en-gb.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/en.js b/share/static/RichText/lang/en.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/en.js
rename to share/static/RichText/lang/en.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/eo.js b/share/static/RichText/lang/eo.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/eo.js
rename to share/static/RichText/lang/eo.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/es.js b/share/static/RichText/lang/es.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/es.js
rename to share/static/RichText/lang/es.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/et.js b/share/static/RichText/lang/et.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/et.js
rename to share/static/RichText/lang/et.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/eu.js b/share/static/RichText/lang/eu.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/eu.js
rename to share/static/RichText/lang/eu.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/fa.js b/share/static/RichText/lang/fa.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/fa.js
rename to share/static/RichText/lang/fa.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/fi.js b/share/static/RichText/lang/fi.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/fi.js
rename to share/static/RichText/lang/fi.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/fo.js b/share/static/RichText/lang/fo.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/fo.js
rename to share/static/RichText/lang/fo.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js b/share/static/RichText/lang/fr-ca.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/fr-ca.js
rename to share/static/RichText/lang/fr-ca.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/fr.js b/share/static/RichText/lang/fr.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/fr.js
rename to share/static/RichText/lang/fr.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/gl.js b/share/static/RichText/lang/gl.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/gl.js
rename to share/static/RichText/lang/gl.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/gu.js b/share/static/RichText/lang/gu.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/gu.js
rename to share/static/RichText/lang/gu.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/he.js b/share/static/RichText/lang/he.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/he.js
rename to share/static/RichText/lang/he.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/hi.js b/share/static/RichText/lang/hi.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/hi.js
rename to share/static/RichText/lang/hi.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/hr.js b/share/static/RichText/lang/hr.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/hr.js
rename to share/static/RichText/lang/hr.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/hu.js b/share/static/RichText/lang/hu.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/hu.js
rename to share/static/RichText/lang/hu.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/is.js b/share/static/RichText/lang/is.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/is.js
rename to share/static/RichText/lang/is.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/it.js b/share/static/RichText/lang/it.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/it.js
rename to share/static/RichText/lang/it.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ja.js b/share/static/RichText/lang/ja.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ja.js
rename to share/static/RichText/lang/ja.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/km.js b/share/static/RichText/lang/km.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/km.js
rename to share/static/RichText/lang/km.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ko.js b/share/static/RichText/lang/ko.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ko.js
rename to share/static/RichText/lang/ko.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/lt.js b/share/static/RichText/lang/lt.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/lt.js
rename to share/static/RichText/lang/lt.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/lv.js b/share/static/RichText/lang/lv.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/lv.js
rename to share/static/RichText/lang/lv.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/mn.js b/share/static/RichText/lang/mn.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/mn.js
rename to share/static/RichText/lang/mn.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ms.js b/share/static/RichText/lang/ms.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ms.js
rename to share/static/RichText/lang/ms.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/nb.js b/share/static/RichText/lang/nb.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/nb.js
rename to share/static/RichText/lang/nb.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/nl.js b/share/static/RichText/lang/nl.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/nl.js
rename to share/static/RichText/lang/nl.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/no.js b/share/static/RichText/lang/no.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/no.js
rename to share/static/RichText/lang/no.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/pl.js b/share/static/RichText/lang/pl.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/pl.js
rename to share/static/RichText/lang/pl.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/pt-br.js b/share/static/RichText/lang/pt-br.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/pt-br.js
rename to share/static/RichText/lang/pt-br.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/pt.js b/share/static/RichText/lang/pt.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/pt.js
rename to share/static/RichText/lang/pt.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ro.js b/share/static/RichText/lang/ro.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ro.js
rename to share/static/RichText/lang/ro.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/ru.js b/share/static/RichText/lang/ru.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/ru.js
rename to share/static/RichText/lang/ru.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/sk.js b/share/static/RichText/lang/sk.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/sk.js
rename to share/static/RichText/lang/sk.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/sl.js b/share/static/RichText/lang/sl.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/sl.js
rename to share/static/RichText/lang/sl.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js b/share/static/RichText/lang/sr-latn.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/sr-latn.js
rename to share/static/RichText/lang/sr-latn.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/sr.js b/share/static/RichText/lang/sr.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/sr.js
rename to share/static/RichText/lang/sr.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/sv.js b/share/static/RichText/lang/sv.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/sv.js
rename to share/static/RichText/lang/sv.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/th.js b/share/static/RichText/lang/th.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/th.js
rename to share/static/RichText/lang/th.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/tr.js b/share/static/RichText/lang/tr.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/tr.js
rename to share/static/RichText/lang/tr.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/uk.js b/share/static/RichText/lang/uk.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/uk.js
rename to share/static/RichText/lang/uk.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/vi.js b/share/static/RichText/lang/vi.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/vi.js
rename to share/static/RichText/lang/vi.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js b/share/static/RichText/lang/zh-cn.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/zh-cn.js
rename to share/static/RichText/lang/zh-cn.js
diff --git a/share/html/NoAuth/RichText/ckeditor/lang/zh.js b/share/static/RichText/lang/zh.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/lang/zh.js
rename to share/static/RichText/lang/zh.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js b/share/static/RichText/plugins/a11yhelp/dialogs/a11yhelp.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
rename to share/static/RichText/plugins/a11yhelp/dialogs/a11yhelp.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js b/share/static/RichText/plugins/a11yhelp/lang/en.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/en.js
rename to share/static/RichText/plugins/a11yhelp/lang/en.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js b/share/static/RichText/plugins/a11yhelp/lang/he.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/a11yhelp/lang/he.js
rename to share/static/RichText/plugins/a11yhelp/lang/he.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js b/share/static/RichText/plugins/about/dialogs/about.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/about.js
rename to share/static/RichText/plugins/about/dialogs/about.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/logo_ckeditor.png b/share/static/RichText/plugins/about/dialogs/logo_ckeditor.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/about/dialogs/logo_ckeditor.png
rename to share/static/RichText/plugins/about/dialogs/logo_ckeditor.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js b/share/static/RichText/plugins/autogrow/plugin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/autogrow/plugin.js
rename to share/static/RichText/plugins/autogrow/plugin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js b/share/static/RichText/plugins/clipboard/dialogs/paste.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/clipboard/dialogs/paste.js
rename to share/static/RichText/plugins/clipboard/dialogs/paste.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js b/share/static/RichText/plugins/colordialog/dialogs/colordialog.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/colordialog/dialogs/colordialog.js
rename to share/static/RichText/plugins/colordialog/dialogs/colordialog.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js b/share/static/RichText/plugins/dialog/dialogDefinition.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/dialog/dialogDefinition.js
rename to share/static/RichText/plugins/dialog/dialogDefinition.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js b/share/static/RichText/plugins/div/dialogs/div.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/div/dialogs/div.js
rename to share/static/RichText/plugins/div/dialogs/div.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js b/share/static/RichText/plugins/find/dialogs/find.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/find/dialogs/find.js
rename to share/static/RichText/plugins/find/dialogs/find.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js b/share/static/RichText/plugins/flash/dialogs/flash.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/flash/dialogs/flash.js
rename to share/static/RichText/plugins/flash/dialogs/flash.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/flash/images/placeholder.png b/share/static/RichText/plugins/flash/images/placeholder.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/flash/images/placeholder.png
rename to share/static/RichText/plugins/flash/images/placeholder.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js b/share/static/RichText/plugins/forms/dialogs/button.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/button.js
rename to share/static/RichText/plugins/forms/dialogs/button.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js b/share/static/RichText/plugins/forms/dialogs/checkbox.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/checkbox.js
rename to share/static/RichText/plugins/forms/dialogs/checkbox.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js b/share/static/RichText/plugins/forms/dialogs/form.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/form.js
rename to share/static/RichText/plugins/forms/dialogs/form.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js b/share/static/RichText/plugins/forms/dialogs/hiddenfield.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/hiddenfield.js
rename to share/static/RichText/plugins/forms/dialogs/hiddenfield.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js b/share/static/RichText/plugins/forms/dialogs/radio.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/radio.js
rename to share/static/RichText/plugins/forms/dialogs/radio.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js b/share/static/RichText/plugins/forms/dialogs/select.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/select.js
rename to share/static/RichText/plugins/forms/dialogs/select.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js b/share/static/RichText/plugins/forms/dialogs/textarea.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textarea.js
rename to share/static/RichText/plugins/forms/dialogs/textarea.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js b/share/static/RichText/plugins/forms/dialogs/textfield.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/dialogs/textfield.js
rename to share/static/RichText/plugins/forms/dialogs/textfield.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/forms/images/hiddenfield.gif b/share/static/RichText/plugins/forms/images/hiddenfield.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/forms/images/hiddenfield.gif
rename to share/static/RichText/plugins/forms/images/hiddenfield.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js b/share/static/RichText/plugins/iframedialog/plugin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/iframedialog/plugin.js
rename to share/static/RichText/plugins/iframedialog/plugin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js b/share/static/RichText/plugins/image/dialogs/image.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/image/dialogs/image.js
rename to share/static/RichText/plugins/image/dialogs/image.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js b/share/static/RichText/plugins/link/dialogs/anchor.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/anchor.js
rename to share/static/RichText/plugins/link/dialogs/anchor.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js b/share/static/RichText/plugins/link/dialogs/link.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/link/dialogs/link.js
rename to share/static/RichText/plugins/link/dialogs/link.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/link/images/anchor.gif b/share/static/RichText/plugins/link/images/anchor.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/link/images/anchor.gif
rename to share/static/RichText/plugins/link/images/anchor.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js b/share/static/RichText/plugins/liststyle/dialogs/liststyle.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/liststyle/dialogs/liststyle.js
rename to share/static/RichText/plugins/liststyle/dialogs/liststyle.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/pagebreak/images/pagebreak.gif b/share/static/RichText/plugins/pagebreak/images/pagebreak.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/pagebreak/images/pagebreak.gif
rename to share/static/RichText/plugins/pagebreak/images/pagebreak.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js b/share/static/RichText/plugins/pastefromword/filter/default.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/pastefromword/filter/default.js
rename to share/static/RichText/plugins/pastefromword/filter/default.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js b/share/static/RichText/plugins/pastetext/dialogs/pastetext.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/pastetext/dialogs/pastetext.js
rename to share/static/RichText/plugins/pastetext/dialogs/pastetext.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js b/share/static/RichText/plugins/scayt/dialogs/options.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/options.js
rename to share/static/RichText/plugins/scayt/dialogs/options.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css b/share/static/RichText/plugins/scayt/dialogs/toolbar.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/scayt/dialogs/toolbar.css
rename to share/static/RichText/plugins/scayt/dialogs/toolbar.css
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_address.png b/share/static/RichText/plugins/showblocks/images/block_address.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_address.png
rename to share/static/RichText/plugins/showblocks/images/block_address.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_blockquote.png b/share/static/RichText/plugins/showblocks/images/block_blockquote.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_blockquote.png
rename to share/static/RichText/plugins/showblocks/images/block_blockquote.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_div.png b/share/static/RichText/plugins/showblocks/images/block_div.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_div.png
rename to share/static/RichText/plugins/showblocks/images/block_div.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h1.png b/share/static/RichText/plugins/showblocks/images/block_h1.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h1.png
rename to share/static/RichText/plugins/showblocks/images/block_h1.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h2.png b/share/static/RichText/plugins/showblocks/images/block_h2.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h2.png
rename to share/static/RichText/plugins/showblocks/images/block_h2.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h3.png b/share/static/RichText/plugins/showblocks/images/block_h3.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h3.png
rename to share/static/RichText/plugins/showblocks/images/block_h3.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h4.png b/share/static/RichText/plugins/showblocks/images/block_h4.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h4.png
rename to share/static/RichText/plugins/showblocks/images/block_h4.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h5.png b/share/static/RichText/plugins/showblocks/images/block_h5.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h5.png
rename to share/static/RichText/plugins/showblocks/images/block_h5.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h6.png b/share/static/RichText/plugins/showblocks/images/block_h6.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_h6.png
rename to share/static/RichText/plugins/showblocks/images/block_h6.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_p.png b/share/static/RichText/plugins/showblocks/images/block_p.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_p.png
rename to share/static/RichText/plugins/showblocks/images/block_p.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_pre.png b/share/static/RichText/plugins/showblocks/images/block_pre.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/showblocks/images/block_pre.png
rename to share/static/RichText/plugins/showblocks/images/block_pre.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js b/share/static/RichText/plugins/smiley/dialogs/smiley.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/dialogs/smiley.js
rename to share/static/RichText/plugins/smiley/dialogs/smiley.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angel_smile.gif b/share/static/RichText/plugins/smiley/images/angel_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angel_smile.gif
rename to share/static/RichText/plugins/smiley/images/angel_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angry_smile.gif b/share/static/RichText/plugins/smiley/images/angry_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/angry_smile.gif
rename to share/static/RichText/plugins/smiley/images/angry_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/broken_heart.gif b/share/static/RichText/plugins/smiley/images/broken_heart.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/broken_heart.gif
rename to share/static/RichText/plugins/smiley/images/broken_heart.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/confused_smile.gif b/share/static/RichText/plugins/smiley/images/confused_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/confused_smile.gif
rename to share/static/RichText/plugins/smiley/images/confused_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/cry_smile.gif b/share/static/RichText/plugins/smiley/images/cry_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/cry_smile.gif
rename to share/static/RichText/plugins/smiley/images/cry_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/devil_smile.gif b/share/static/RichText/plugins/smiley/images/devil_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/devil_smile.gif
rename to share/static/RichText/plugins/smiley/images/devil_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/embaressed_smile.gif b/share/static/RichText/plugins/smiley/images/embaressed_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/embaressed_smile.gif
rename to share/static/RichText/plugins/smiley/images/embaressed_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/envelope.gif b/share/static/RichText/plugins/smiley/images/envelope.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/envelope.gif
rename to share/static/RichText/plugins/smiley/images/envelope.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/heart.gif b/share/static/RichText/plugins/smiley/images/heart.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/heart.gif
rename to share/static/RichText/plugins/smiley/images/heart.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/kiss.gif b/share/static/RichText/plugins/smiley/images/kiss.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/kiss.gif
rename to share/static/RichText/plugins/smiley/images/kiss.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/lightbulb.gif b/share/static/RichText/plugins/smiley/images/lightbulb.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/lightbulb.gif
rename to share/static/RichText/plugins/smiley/images/lightbulb.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/omg_smile.gif b/share/static/RichText/plugins/smiley/images/omg_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/omg_smile.gif
rename to share/static/RichText/plugins/smiley/images/omg_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/regular_smile.gif b/share/static/RichText/plugins/smiley/images/regular_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/regular_smile.gif
rename to share/static/RichText/plugins/smiley/images/regular_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/sad_smile.gif b/share/static/RichText/plugins/smiley/images/sad_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/sad_smile.gif
rename to share/static/RichText/plugins/smiley/images/sad_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/shades_smile.gif b/share/static/RichText/plugins/smiley/images/shades_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/shades_smile.gif
rename to share/static/RichText/plugins/smiley/images/shades_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/teeth_smile.gif b/share/static/RichText/plugins/smiley/images/teeth_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/teeth_smile.gif
rename to share/static/RichText/plugins/smiley/images/teeth_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_down.gif b/share/static/RichText/plugins/smiley/images/thumbs_down.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_down.gif
rename to share/static/RichText/plugins/smiley/images/thumbs_down.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_up.gif b/share/static/RichText/plugins/smiley/images/thumbs_up.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/thumbs_up.gif
rename to share/static/RichText/plugins/smiley/images/thumbs_up.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/tounge_smile.gif b/share/static/RichText/plugins/smiley/images/tounge_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/tounge_smile.gif
rename to share/static/RichText/plugins/smiley/images/tounge_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif b/share/static/RichText/plugins/smiley/images/whatchutalkingabout_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif
rename to share/static/RichText/plugins/smiley/images/whatchutalkingabout_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/wink_smile.gif b/share/static/RichText/plugins/smiley/images/wink_smile.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/smiley/images/wink_smile.gif
rename to share/static/RichText/plugins/smiley/images/wink_smile.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js b/share/static/RichText/plugins/specialchar/dialogs/specialchar.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/specialchar/dialogs/specialchar.js
rename to share/static/RichText/plugins/specialchar/dialogs/specialchar.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js b/share/static/RichText/plugins/styles/styles/default.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/styles/styles/default.js
rename to share/static/RichText/plugins/styles/styles/default.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js b/share/static/RichText/plugins/table/dialogs/table.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/table/dialogs/table.js
rename to share/static/RichText/plugins/table/dialogs/table.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js b/share/static/RichText/plugins/tableresize/plugin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/tableresize/plugin.js
rename to share/static/RichText/plugins/tableresize/plugin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js b/share/static/RichText/plugins/tabletools/dialogs/tableCell.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/tabletools/dialogs/tableCell.js
rename to share/static/RichText/plugins/tabletools/dialogs/tableCell.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js b/share/static/RichText/plugins/templates/dialogs/templates.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/templates/dialogs/templates.js
rename to share/static/RichText/plugins/templates/dialogs/templates.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js b/share/static/RichText/plugins/templates/templates/default.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/default.js
rename to share/static/RichText/plugins/templates/templates/default.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template1.gif b/share/static/RichText/plugins/templates/templates/images/template1.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template1.gif
rename to share/static/RichText/plugins/templates/templates/images/template1.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template2.gif b/share/static/RichText/plugins/templates/templates/images/template2.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template2.gif
rename to share/static/RichText/plugins/templates/templates/images/template2.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template3.gif b/share/static/RichText/plugins/templates/templates/images/template3.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/templates/templates/images/template3.gif
rename to share/static/RichText/plugins/templates/templates/images/template3.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js b/share/static/RichText/plugins/uicolor/dialogs/uicolor.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/dialogs/uicolor.js
rename to share/static/RichText/plugins/uicolor/dialogs/uicolor.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js b/share/static/RichText/plugins/uicolor/lang/en.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/lang/en.js
rename to share/static/RichText/plugins/uicolor/lang/en.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js b/share/static/RichText/plugins/uicolor/plugin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/plugin.js
rename to share/static/RichText/plugins/uicolor/plugin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/uicolor.gif b/share/static/RichText/plugins/uicolor/uicolor.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/uicolor.gif
rename to share/static/RichText/plugins/uicolor/uicolor.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_bg.png b/share/static/RichText/plugins/uicolor/yui/assets/hue_bg.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_bg.png
rename to share/static/RichText/plugins/uicolor/yui/assets/hue_bg.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png b/share/static/RichText/plugins/uicolor/yui/assets/hue_thumb.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png
rename to share/static/RichText/plugins/uicolor/yui/assets/hue_thumb.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_mask.png b/share/static/RichText/plugins/uicolor/yui/assets/picker_mask.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_mask.png
rename to share/static/RichText/plugins/uicolor/yui/assets/picker_mask.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png b/share/static/RichText/plugins/uicolor/yui/assets/picker_thumb.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png
rename to share/static/RichText/plugins/uicolor/yui/assets/picker_thumb.png
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css b/share/static/RichText/plugins/uicolor/yui/assets/yui.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/assets/yui.css
rename to share/static/RichText/plugins/uicolor/yui/assets/yui.css
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js b/share/static/RichText/plugins/uicolor/yui/yui.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/uicolor/yui/yui.js
rename to share/static/RichText/plugins/uicolor/yui/yui.js
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html b/share/static/RichText/plugins/wsc/dialogs/ciframe.html
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/ciframe.html
rename to share/static/RichText/plugins/wsc/dialogs/ciframe.html
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html b/share/static/RichText/plugins/wsc/dialogs/tmpFrameset.html
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/tmpFrameset.html
rename to share/static/RichText/plugins/wsc/dialogs/tmpFrameset.html
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css b/share/static/RichText/plugins/wsc/dialogs/wsc.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.css
rename to share/static/RichText/plugins/wsc/dialogs/wsc.css
diff --git a/share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js b/share/static/RichText/plugins/wsc/dialogs/wsc.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/plugins/wsc/dialogs/wsc.js
rename to share/static/RichText/plugins/wsc/dialogs/wsc.js
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css b/share/static/RichText/skins/kama/dialog.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/dialog.css
rename to share/static/RichText/skins/kama/dialog.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css b/share/static/RichText/skins/kama/editor.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/editor.css
rename to share/static/RichText/skins/kama/editor.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png b/share/static/RichText/skins/kama/icons.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/icons.png
rename to share/static/RichText/skins/kama/icons.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png b/share/static/RichText/skins/kama/icons_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/icons_rtl.png
rename to share/static/RichText/skins/kama/icons_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif b/share/static/RichText/skins/kama/images/dialog_sides.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.gif
rename to share/static/RichText/skins/kama/images/dialog_sides.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png b/share/static/RichText/skins/kama/images/dialog_sides.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides.png
rename to share/static/RichText/skins/kama/images/dialog_sides.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png b/share/static/RichText/skins/kama/images/dialog_sides_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/dialog_sides_rtl.png
rename to share/static/RichText/skins/kama/images/dialog_sides_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif b/share/static/RichText/skins/kama/images/mini.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/mini.gif
rename to share/static/RichText/skins/kama/images/mini.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png b/share/static/RichText/skins/kama/images/noimage.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/noimage.png
rename to share/static/RichText/skins/kama/images/noimage.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png b/share/static/RichText/skins/kama/images/sprites.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites.png
rename to share/static/RichText/skins/kama/images/sprites.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png b/share/static/RichText/skins/kama/images/sprites_ie6.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/sprites_ie6.png
rename to share/static/RichText/skins/kama/images/sprites_ie6.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif b/share/static/RichText/skins/kama/images/toolbar_start.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/images/toolbar_start.gif
rename to share/static/RichText/skins/kama/images/toolbar_start.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js b/share/static/RichText/skins/kama/skin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/skin.js
rename to share/static/RichText/skins/kama/skin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css b/share/static/RichText/skins/kama/templates.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/kama/templates.css
rename to share/static/RichText/skins/kama/templates.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css b/share/static/RichText/skins/office2003/dialog.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/dialog.css
rename to share/static/RichText/skins/office2003/dialog.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css b/share/static/RichText/skins/office2003/editor.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/editor.css
rename to share/static/RichText/skins/office2003/editor.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png b/share/static/RichText/skins/office2003/icons.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/icons.png
rename to share/static/RichText/skins/office2003/icons.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png b/share/static/RichText/skins/office2003/icons_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/icons_rtl.png
rename to share/static/RichText/skins/office2003/icons_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif b/share/static/RichText/skins/office2003/images/dialog_sides.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.gif
rename to share/static/RichText/skins/office2003/images/dialog_sides.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png b/share/static/RichText/skins/office2003/images/dialog_sides.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides.png
rename to share/static/RichText/skins/office2003/images/dialog_sides.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png b/share/static/RichText/skins/office2003/images/dialog_sides_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/dialog_sides_rtl.png
rename to share/static/RichText/skins/office2003/images/dialog_sides_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif b/share/static/RichText/skins/office2003/images/mini.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/mini.gif
rename to share/static/RichText/skins/office2003/images/mini.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png b/share/static/RichText/skins/office2003/images/noimage.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/noimage.png
rename to share/static/RichText/skins/office2003/images/noimage.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png b/share/static/RichText/skins/office2003/images/sprites.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites.png
rename to share/static/RichText/skins/office2003/images/sprites.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png b/share/static/RichText/skins/office2003/images/sprites_ie6.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/images/sprites_ie6.png
rename to share/static/RichText/skins/office2003/images/sprites_ie6.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js b/share/static/RichText/skins/office2003/skin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/skin.js
rename to share/static/RichText/skins/office2003/skin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css b/share/static/RichText/skins/office2003/templates.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/office2003/templates.css
rename to share/static/RichText/skins/office2003/templates.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css b/share/static/RichText/skins/v2/dialog.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/dialog.css
rename to share/static/RichText/skins/v2/dialog.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css b/share/static/RichText/skins/v2/editor.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/editor.css
rename to share/static/RichText/skins/v2/editor.css
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png b/share/static/RichText/skins/v2/icons.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/icons.png
rename to share/static/RichText/skins/v2/icons.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png b/share/static/RichText/skins/v2/icons_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/icons_rtl.png
rename to share/static/RichText/skins/v2/icons_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif b/share/static/RichText/skins/v2/images/dialog_sides.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.gif
rename to share/static/RichText/skins/v2/images/dialog_sides.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png b/share/static/RichText/skins/v2/images/dialog_sides.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides.png
rename to share/static/RichText/skins/v2/images/dialog_sides.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png b/share/static/RichText/skins/v2/images/dialog_sides_rtl.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/dialog_sides_rtl.png
rename to share/static/RichText/skins/v2/images/dialog_sides_rtl.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif b/share/static/RichText/skins/v2/images/mini.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/mini.gif
rename to share/static/RichText/skins/v2/images/mini.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png b/share/static/RichText/skins/v2/images/noimage.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/noimage.png
rename to share/static/RichText/skins/v2/images/noimage.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png b/share/static/RichText/skins/v2/images/sprites.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites.png
rename to share/static/RichText/skins/v2/images/sprites.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png b/share/static/RichText/skins/v2/images/sprites_ie6.png
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/sprites_ie6.png
rename to share/static/RichText/skins/v2/images/sprites_ie6.png
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif b/share/static/RichText/skins/v2/images/toolbar_start.gif
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/images/toolbar_start.gif
rename to share/static/RichText/skins/v2/images/toolbar_start.gif
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js b/share/static/RichText/skins/v2/skin.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/skin.js
rename to share/static/RichText/skins/v2/skin.js
diff --git a/share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css b/share/static/RichText/skins/v2/templates.css
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/skins/v2/templates.css
rename to share/static/RichText/skins/v2/templates.css
diff --git a/share/html/NoAuth/RichText/ckeditor/themes/default/theme.js b/share/static/RichText/themes/default/theme.js
similarity index 100%
rename from share/html/NoAuth/RichText/ckeditor/themes/default/theme.js
rename to share/static/RichText/themes/default/theme.js
diff --git a/share/html/NoAuth/css/aileron/images/source/background-gradient.png b/share/static/css/aileron/images/background-gradient.png
similarity index 100%
rename from share/html/NoAuth/css/aileron/images/source/background-gradient.png
rename to share/static/css/aileron/images/background-gradient.png
diff --git a/share/html/NoAuth/css/ballard/images/source/background-gradient.png b/share/static/css/ballard/images/background-gradient.png
similarity index 100%
rename from share/html/NoAuth/css/ballard/images/source/background-gradient.png
rename to share/static/css/ballard/images/background-gradient.png
diff --git a/share/html/NoAuth/css/images/arrows-ffffff.gif b/share/static/css/images/arrows-ffffff.gif
similarity index 100%
rename from share/html/NoAuth/css/images/arrows-ffffff.gif
rename to share/static/css/images/arrows-ffffff.gif
diff --git a/share/html/NoAuth/css/images/arrows-ffffff.png b/share/static/css/images/arrows-ffffff.png
similarity index 100%
rename from share/html/NoAuth/css/images/arrows-ffffff.png
rename to share/static/css/images/arrows-ffffff.png
diff --git a/share/html/NoAuth/css/images/arrows-grey.gif b/share/static/css/images/arrows-grey.gif
similarity index 100%
rename from share/html/NoAuth/css/images/arrows-grey.gif
rename to share/static/css/images/arrows-grey.gif
diff --git a/share/html/NoAuth/css/images/arrows-grey.png b/share/static/css/images/arrows-grey.png
similarity index 100%
rename from share/html/NoAuth/css/images/arrows-grey.png
rename to share/static/css/images/arrows-grey.png
diff --git a/share/html/NoAuth/css/images/jquery-modal-close.png b/share/static/css/images/jquery-modal-close.png
similarity index 100%
rename from share/html/NoAuth/css/images/jquery-modal-close.png
rename to share/static/css/images/jquery-modal-close.png
diff --git a/share/html/NoAuth/css/images/shadow.gif b/share/static/css/images/shadow.gif
similarity index 100%
rename from share/html/NoAuth/css/images/shadow.gif
rename to share/static/css/images/shadow.gif
diff --git a/share/html/NoAuth/css/images/shadow.png b/share/static/css/images/shadow.png
similarity index 100%
rename from share/html/NoAuth/css/images/shadow.png
rename to share/static/css/images/shadow.png
diff --git a/share/html/NoAuth/css/web2/images/source/background-gradient.png b/share/static/css/web2/images/background-gradient.png
similarity index 100%
rename from share/html/NoAuth/css/web2/images/source/background-gradient.png
rename to share/static/css/web2/images/background-gradient.png
diff --git a/share/html/NoAuth/images/bpslogo.png b/share/static/images/bpslogo.png
similarity index 100%
rename from share/html/NoAuth/images/bpslogo.png
rename to share/static/images/bpslogo.png
diff --git a/share/html/NoAuth/images/css/cb-light.gif b/share/static/images/css/cb-light.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cb-light.gif
rename to share/static/images/css/cb-light.gif
diff --git a/share/html/NoAuth/images/css/cb.gif b/share/static/images/css/cb.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cb.gif
rename to share/static/images/css/cb.gif
diff --git a/share/html/NoAuth/images/css/cbr-b2g.gif b/share/static/images/css/cbr-b2g.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cbr-b2g.gif
rename to share/static/images/css/cbr-b2g.gif
diff --git a/share/html/NoAuth/images/css/cbr-b2lb.gif b/share/static/images/css/cbr-b2lb.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cbr-b2lb.gif
rename to share/static/images/css/cbr-b2lb.gif
diff --git a/share/html/NoAuth/images/css/cbr-gray.gif b/share/static/images/css/cbr-gray.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cbr-gray.gif
rename to share/static/images/css/cbr-gray.gif
diff --git a/share/html/NoAuth/images/css/cbr-trans.gif b/share/static/images/css/cbr-trans.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cbr-trans.gif
rename to share/static/images/css/cbr-trans.gif
diff --git a/share/html/NoAuth/images/css/cbr.gif b/share/static/images/css/cbr.gif
similarity index 100%
rename from share/html/NoAuth/images/css/cbr.gif
rename to share/static/images/css/cbr.gif
diff --git a/share/html/NoAuth/images/css/ct-light.gif b/share/static/images/css/ct-light.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ct-light.gif
rename to share/static/images/css/ct-light.gif
diff --git a/share/html/NoAuth/images/css/ct.gif b/share/static/images/css/ct.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ct.gif
rename to share/static/images/css/ct.gif
diff --git a/share/html/NoAuth/images/css/ctr-b2g.gif b/share/static/images/css/ctr-b2g.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ctr-b2g.gif
rename to share/static/images/css/ctr-b2g.gif
diff --git a/share/html/NoAuth/images/css/ctr-b2lb.gif b/share/static/images/css/ctr-b2lb.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ctr-b2lb.gif
rename to share/static/images/css/ctr-b2lb.gif
diff --git a/share/html/NoAuth/images/css/ctr-gray.gif b/share/static/images/css/ctr-gray.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ctr-gray.gif
rename to share/static/images/css/ctr-gray.gif
diff --git a/share/html/NoAuth/images/css/ctr-trans.gif b/share/static/images/css/ctr-trans.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ctr-trans.gif
rename to share/static/images/css/ctr-trans.gif
diff --git a/share/html/NoAuth/images/css/ctr.gif b/share/static/images/css/ctr.gif
similarity index 100%
rename from share/html/NoAuth/images/css/ctr.gif
rename to share/static/images/css/ctr.gif
diff --git a/share/html/NoAuth/images/css/dark-arrow-up.png b/share/static/images/css/dark-arrow-up.png
similarity index 100%
rename from share/html/NoAuth/images/css/dark-arrow-up.png
rename to share/static/images/css/dark-arrow-up.png
diff --git a/share/html/NoAuth/images/css/dark-arrow.png b/share/static/images/css/dark-arrow.png
similarity index 100%
rename from share/html/NoAuth/images/css/dark-arrow.png
rename to share/static/images/css/dark-arrow.png
diff --git a/share/html/NoAuth/images/css/fieldbg-autocomplete.gif b/share/static/images/css/fieldbg-autocomplete.gif
similarity index 100%
rename from share/html/NoAuth/images/css/fieldbg-autocomplete.gif
rename to share/static/images/css/fieldbg-autocomplete.gif
diff --git a/share/html/NoAuth/images/css/light-arrow-up.png b/share/static/images/css/light-arrow-up.png
similarity index 100%
rename from share/html/NoAuth/images/css/light-arrow-up.png
rename to share/static/images/css/light-arrow-up.png
diff --git a/share/html/NoAuth/images/css/light-arrow.png b/share/static/images/css/light-arrow.png
similarity index 100%
rename from share/html/NoAuth/images/css/light-arrow.png
rename to share/static/images/css/light-arrow.png
diff --git a/share/html/NoAuth/images/css/rolldown-arrow.gif b/share/static/images/css/rolldown-arrow.gif
similarity index 100%
rename from share/html/NoAuth/images/css/rolldown-arrow.gif
rename to share/static/images/css/rolldown-arrow.gif
diff --git a/share/html/NoAuth/images/css/rolldown-arrow.png b/share/static/images/css/rolldown-arrow.png
similarity index 100%
rename from share/html/NoAuth/images/css/rolldown-arrow.png
rename to share/static/images/css/rolldown-arrow.png
diff --git a/share/html/NoAuth/images/css/rollup-arrow.gif b/share/static/images/css/rollup-arrow.gif
similarity index 100%
rename from share/html/NoAuth/images/css/rollup-arrow.gif
rename to share/static/images/css/rollup-arrow.gif
diff --git a/share/html/NoAuth/images/empty_star.gif b/share/static/images/empty_star.gif
similarity index 100%
rename from share/html/NoAuth/images/empty_star.gif
rename to share/static/images/empty_star.gif
diff --git a/share/html/NoAuth/images/eyedropper.png b/share/static/images/eyedropper.png
similarity index 100%
rename from share/html/NoAuth/images/eyedropper.png
rename to share/static/images/eyedropper.png
diff --git a/share/html/NoAuth/images/farbtastic/marker.png b/share/static/images/farbtastic/marker.png
similarity index 100%
rename from share/html/NoAuth/images/farbtastic/marker.png
rename to share/static/images/farbtastic/marker.png
diff --git a/share/html/NoAuth/images/farbtastic/mask.png b/share/static/images/farbtastic/mask.png
similarity index 100%
rename from share/html/NoAuth/images/farbtastic/mask.png
rename to share/static/images/farbtastic/mask.png
diff --git a/share/html/NoAuth/images/farbtastic/wheel.png b/share/static/images/farbtastic/wheel.png
similarity index 100%
rename from share/html/NoAuth/images/farbtastic/wheel.png
rename to share/static/images/farbtastic/wheel.png
diff --git a/share/html/NoAuth/images/favicon.png b/share/static/images/favicon.png
similarity index 100%
rename from share/html/NoAuth/images/favicon.png
rename to share/static/images/favicon.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif b/share/static/images/jquery_ui/ui-anim_basic_16x16.gif
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-anim_basic_16x16.gif
rename to share/static/images/jquery_ui/ui-anim_basic_16x16.gif
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png b/share/static/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
rename to share/static/images/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png b/share/static/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
rename to share/static/images/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png b/share/static/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png
rename to share/static/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png b/share/static/images/jquery_ui/ui-bg_flat_10_000000_40x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_flat_10_000000_40x100.png
rename to share/static/images/jquery_ui/ui-bg_flat_10_000000_40x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png b/share/static/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png
rename to share/static/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png b/share/static/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png
rename to share/static/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png b/share/static/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
rename to share/static/images/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png b/share/static/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
rename to share/static/images/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png b/share/static/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png
rename to share/static/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png b/share/static/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
rename to share/static/images/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png b/share/static/images/jquery_ui/ui-icons_222222_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png
rename to share/static/images/jquery_ui/ui-icons_222222_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png b/share/static/images/jquery_ui/ui-icons_228ef1_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_228ef1_256x240.png
rename to share/static/images/jquery_ui/ui-icons_228ef1_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png b/share/static/images/jquery_ui/ui-icons_2e83ff_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png
rename to share/static/images/jquery_ui/ui-icons_2e83ff_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png b/share/static/images/jquery_ui/ui-icons_4488cc_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png
rename to share/static/images/jquery_ui/ui-icons_4488cc_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png b/share/static/images/jquery_ui/ui-icons_454545_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png
rename to share/static/images/jquery_ui/ui-icons_454545_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png b/share/static/images/jquery_ui/ui-icons_888888_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png
rename to share/static/images/jquery_ui/ui-icons_888888_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png b/share/static/images/jquery_ui/ui-icons_cd0a0a_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png
rename to share/static/images/jquery_ui/ui-icons_cd0a0a_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png b/share/static/images/jquery_ui/ui-icons_ef8c08_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_ef8c08_256x240.png
rename to share/static/images/jquery_ui/ui-icons_ef8c08_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png b/share/static/images/jquery_ui/ui-icons_ffd27a_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_ffd27a_256x240.png
rename to share/static/images/jquery_ui/ui-icons_ffd27a_256x240.png
diff --git a/share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png b/share/static/images/jquery_ui/ui-icons_ffffff_256x240.png
similarity index 100%
rename from share/html/NoAuth/images/jquery_ui/ui-icons_ffffff_256x240.png
rename to share/static/images/jquery_ui/ui-icons_ffffff_256x240.png
diff --git a/share/html/NoAuth/images/star.gif b/share/static/images/star.gif
similarity index 100%
rename from share/html/NoAuth/images/star.gif
rename to share/static/images/star.gif
diff --git a/share/html/NoAuth/images/tablesorter/asc.gif b/share/static/images/tablesorter/asc.gif
similarity index 100%
rename from share/html/NoAuth/images/tablesorter/asc.gif
rename to share/static/images/tablesorter/asc.gif
diff --git a/share/html/NoAuth/images/tablesorter/bg.gif b/share/static/images/tablesorter/bg.gif
similarity index 100%
rename from share/html/NoAuth/images/tablesorter/bg.gif
rename to share/static/images/tablesorter/bg.gif
diff --git a/share/html/NoAuth/images/tablesorter/desc.gif b/share/static/images/tablesorter/desc.gif
similarity index 100%
rename from share/html/NoAuth/images/tablesorter/desc.gif
rename to share/static/images/tablesorter/desc.gif
diff --git a/share/html/NoAuth/images/test.png b/share/static/images/test.png
similarity index 100%
rename from share/html/NoAuth/images/test.png
rename to share/static/images/test.png

commit 46c2234ef20e45206f07ad85bac18e74fb2b5412
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri May 13 14:52:18 2011 +0800

    Serve only CSS and JS below /NoAuth/css and /NoAuth/js, respectively.

diff --git a/share/html/NoAuth/css/autohandler b/share/html/NoAuth/css/autohandler
index 0e94893..3c75388 100644
--- a/share/html/NoAuth/css/autohandler
+++ b/share/html/NoAuth/css/autohandler
@@ -46,21 +46,8 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <%init>
-my $file = $m->base_comp->source_file;
-
-if ($file =~ /\.(?:gif|png|jpe?g)$/i) {
-    my $relfile = $m->base_comp->path;
-    RT::Interface::Web->SendStaticFile( File => $file, RelativeFile => $relfile );
-}
-elsif ($file =~ /\.(?:htc)$/i) {
-    RT::Interface::Web::StaticFileHeaders();
-    $r->content_type('text/x-component') ;
-    $m->call_next();
-    return();
-} else {
-    RT::Interface::Web::StaticFileHeaders();
-    $r->content_type('text/css; charset=utf-8') ;
-    $m->call_next();
-    return();
-}
+RT::Interface::Web::StaticFileHeaders();
+$r->content_type('text/css; charset=utf-8') ;
+$m->call_next();
+return();
 </%init>
diff --git a/share/html/NoAuth/js/autohandler b/share/html/NoAuth/js/autohandler
index 15cd267..d5df354 100644
--- a/share/html/NoAuth/js/autohandler
+++ b/share/html/NoAuth/js/autohandler
@@ -46,17 +46,8 @@
 %#
 %# END BPS TAGGED BLOCK }}}
 <%init>
-
-my $type;
-my $file = $m->base_comp->source_file;
-
-if ($file =~ /\.(gif|png|jpe?g)$/i) {
-    my $relfile = $m->base_comp->path;
-    RT::Interface::Web->SendStaticFile( File => $file, RelativeFile => $relfile );
-} else {
-    &RT::Interface::Web::StaticFileHeaders();
-    $r->content_type('application/x-javascript; charset=utf-8');
-    $m->call_next();
-    return();
-}
+RT::Interface::Web::StaticFileHeaders();
+$r->content_type('application/x-javascript; charset=utf-8');
+$m->call_next();
+return();
 </%init>

commit 8ea519a1c2a9d23cc0c0b713af9707f8ba828131
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:27:19 2012 -0500

    Update locations for static file moves

diff --git a/devel/third-party/README b/devel/third-party/README
index 933ba16..0d4145d 100644
--- a/devel/third-party/README
+++ b/devel/third-party/README
@@ -26,7 +26,7 @@ eyedropper.svg
 The Noun Project
 http://thenounproject.com/noun/eye-dropper/
 Creative Commons - Attribution (CC BY 3.0)
-Modified version included at share/html/NoAuth/images/eyedropper.png
+Modified version included at share/static/images/eyedropper.png
 
 jquery.modal-0.2.5.js
 https://github.com/kylefox/jquery-modal/archive/v0.2.5.tar.gz
diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index 6eb5ad1..230a3e9 100755
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -1016,7 +1016,7 @@ Define the directory name to be used for images in RT web documents.
 
 =cut
 
-Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/");
+Set($WebImagesURL, RT->Config->Get('WebPath') . "/static/images/");
 
 =item C<$LogoURL>
 
diff --git a/share/html/Elements/HeaderJavascript b/share/html/Elements/HeaderJavascript
index 7c9c4b8..5e19bef 100644
--- a/share/html/Elements/HeaderJavascript
+++ b/share/html/Elements/HeaderJavascript
@@ -56,7 +56,7 @@ $onload => undef
 % }
 
 % if ( $RichText and RT->Config->Get('MessageBoxRichText',  $session{'CurrentUser'}) ) {
-<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/NoAuth/RichText/ckeditor.js"></script>
+<script type="text/javascript" src="<%RT->Config->Get('WebPath')%>/static/RichText/ckeditor.js"></script>
 % }
 <script type="text/javascript"><!--
 	jQuery( loadTitleBoxStates );
diff --git a/share/html/NoAuth/css/aileron/boxes.css b/share/html/NoAuth/css/aileron/boxes.css
index f90ac9f..120d839 100644
--- a/share/html/NoAuth/css/aileron/boxes.css
+++ b/share/html/NoAuth/css/aileron/boxes.css
@@ -164,7 +164,7 @@
   margin: 0;
   width: 20px;
 
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/css/rollup-arrow.gif) no-repeat;
   background-position: center 0;
   
   position: absolute;
@@ -176,5 +176,5 @@
 }
 
 .titlebox.rolled-up .titlebox-title .widget a {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/images/css/rolldown-arrow.gif);
 }
diff --git a/share/html/NoAuth/css/aileron/layout.css b/share/html/NoAuth/css/aileron/layout.css
index ff39ea3..5253fb2 100644
--- a/share/html/NoAuth/css/aileron/layout.css
+++ b/share/html/NoAuth/css/aileron/layout.css
@@ -50,7 +50,7 @@
 body {
     padding:0;
     margin:0;
-    background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
+    background: #547CCC url(<%RT->Config->Get('WebPath')%>/static/css/web2/images/background-gradient.png) top left repeat-x ;
     font-family: arial, helvetica, sans-serif;
     color: #000000;
 }
@@ -101,7 +101,7 @@ div#footer #time {
 
 div#footer #bpscredits {
  text-align: right;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ background: url(<%RT->Config->Get('WebPath')%>/static/images/bpslogo.png) no-repeat top right;
  padding-top: 4em;
 }
 
diff --git a/share/html/NoAuth/css/aileron/msie6.css b/share/html/NoAuth/css/aileron/msie6.css
index cd0f293..b15ac19 100644
--- a/share/html/NoAuth/css/aileron/msie6.css
+++ b/share/html/NoAuth/css/aileron/msie6.css
@@ -78,7 +78,7 @@ div#body {
 
 
 .sf-sub-indicator {
-	background:		url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-ffffff.gif) no-repeat -10px -100px;
+	background:		url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-ffffff.gif) no-repeat -10px -100px;
 }
 
 #page-navigation ul {
diff --git a/share/html/NoAuth/css/aileron/nav.css b/share/html/NoAuth/css/aileron/nav.css
index fc670ee..3d6995c 100644
--- a/share/html/NoAuth/css/aileron/nav.css
+++ b/share/html/NoAuth/css/aileron/nav.css
@@ -59,7 +59,7 @@
 }
 
 .sf-sub-indicator {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-grey.png);
 }
 
 .sf-menu li li .sf-sub-indicator {
diff --git a/share/html/NoAuth/css/ballard/boxes.css b/share/html/NoAuth/css/ballard/boxes.css
index 9610cd5..40c19c4 100644
--- a/share/html/NoAuth/css/ballard/boxes.css
+++ b/share/html/NoAuth/css/ballard/boxes.css
@@ -168,7 +168,7 @@
   margin-top: 0.6em;
   width: 20px;
 
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center 0;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/css/rollup-arrow.gif) no-repeat center 0;
 
   position: absolute;
   top: -1em;
@@ -185,5 +185,5 @@
 }
 
 .titlebox.rolled-up .titlebox-title .widget a {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/images/css/rolldown-arrow.gif);
 }
diff --git a/share/html/NoAuth/css/ballard/layout.css b/share/html/NoAuth/css/ballard/layout.css
index 8b600b8..c9a768c 100644
--- a/share/html/NoAuth/css/ballard/layout.css
+++ b/share/html/NoAuth/css/ballard/layout.css
@@ -50,7 +50,7 @@
 body {
     padding:0;
     margin:0;
-    background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
+    background: #547CCC url(<%RT->Config->Get('WebPath')%>/static/css/web2/images/background-gradient.png) top left repeat-x ;
     font-family: arial, helvetica, sans-serif;
     color: #000000;
 }
@@ -103,7 +103,7 @@ div#footer #time {
 
 div#footer #bpscredits {
  text-align: right;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ background: url(<%RT->Config->Get('WebPath')%>/static/images/bpslogo.png) no-repeat top right;
  padding-top: 4em;
 }
 
diff --git a/share/html/NoAuth/css/base/farbtastic.css b/share/html/NoAuth/css/base/farbtastic.css
index 8d9e8e0..d69d7c9 100644
--- a/share/html/NoAuth/css/base/farbtastic.css
+++ b/share/html/NoAuth/css/base/farbtastic.css
@@ -81,18 +81,18 @@
   height: 101px;
 }
 .farbtastic .wheel {
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/wheel.png) no-repeat;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/farbtastic/wheel.png) no-repeat;
   width: 195px;
   height: 195px;
 }
 .farbtastic .overlay {
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/mask.png) no-repeat;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/farbtastic/mask.png) no-repeat;
 }
 .farbtastic .marker {
   width: 17px;
   height: 17px;
   margin: -8px 0 0 -8px;
   overflow: hidden; 
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/farbtastic/marker.png) no-repeat;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/farbtastic/marker.png) no-repeat;
 }
 
diff --git a/share/html/NoAuth/css/base/jquery-ui.custom.modified.css b/share/html/NoAuth/css/base/jquery-ui.custom.modified.css
index 3b1e1a0..e03c1c6 100644
--- a/share/html/NoAuth/css/base/jquery-ui.custom.modified.css
+++ b/share/html/NoAuth/css/base/jquery-ui.custom.modified.css
@@ -59,26 +59,26 @@
 .ui-widget { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
 .ui-widget .ui-widget { font-size: 1em; }
 .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
 .ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
 .ui-widget-header a { color: #222222; }
 
 /* Interaction states
 ----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
 .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
 .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
 .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
 .ui-widget :active { outline: none; }
 
 /* Interaction Cues
 ----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
 .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
 .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
 .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
 .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
@@ -89,14 +89,14 @@
 ----------------------------------*/
 
 /* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_222222_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_888888_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_454545_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_cd0a0a_256x240.png); }
+.ui-icon { width: 16px; height: 16px; background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_cd0a0a_256x240.png); }
 
 /* positioning */
 .ui-icon-carat-1-n { background-position: 0 0; }
@@ -291,8 +291,8 @@
 .ui-corner-all { -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em; }
 
 /* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
+.ui-widget-overlay { background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
 
 /*
  * jQuery UI Accordion 1.8.7
diff --git a/share/html/NoAuth/css/base/jquery.modal.css b/share/html/NoAuth/css/base/jquery.modal.css
index 61e4cb6..f156ab9 100644
--- a/share/html/NoAuth/css/base/jquery.modal.css
+++ b/share/html/NoAuth/css/base/jquery.modal.css
@@ -41,5 +41,5 @@
   width: 30px;
   height: 30px;
   text-indent: -9999px;
-  background: url(<% RT->Config->Get("WebPath") %>/NoAuth/css/images/jquery-modal-close.png) no-repeat 0 0;
+  background: url(<% RT->Config->Get("WebPath") %>/static/css/images/jquery-modal-close.png) no-repeat 0 0;
 }
diff --git a/share/html/NoAuth/css/base/superfish.css b/share/html/NoAuth/css/base/superfish.css
index 7cb3b56..2638d49 100644
--- a/share/html/NoAuth/css/base/superfish.css
+++ b/share/html/NoAuth/css/base/superfish.css
@@ -95,7 +95,7 @@ ul.sf-menu li li li.sfHover ul {
 	height:			10px;
 	text-indent: 	-999em;
 	overflow:		hidden;
-	background:		url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-ffffff.png) no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
+	background:		url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-ffffff.png) no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
 }
 a > .sf-sub-indicator {  /* give all except IE6 the correct values */
 	top:			.8em;
@@ -124,7 +124,7 @@ li.sfHover > a > .sf-sub-indicator {
 
 /*** shadows for all but IE6 ***/
 .sf-shadow ul {
-	background:	url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/shadow.png) no-repeat bottom right;
+	background:	url(<%RT->Config->Get('WebPath')%>/static/css/images/shadow.png) no-repeat bottom right;
 	padding: 0 8px 9px 0;
 	-moz-border-radius-bottomleft: 17px;
 	-moz-border-radius-topright: 17px;
diff --git a/share/html/NoAuth/css/base/tablesorter.css b/share/html/NoAuth/css/base/tablesorter.css
index 34d8c9c..6424568 100644
--- a/share/html/NoAuth/css/base/tablesorter.css
+++ b/share/html/NoAuth/css/base/tablesorter.css
@@ -26,7 +26,7 @@ table.tablesorter thead tr th, table.tablesorter tfoot tr th {
 	padding: 4px;
 }
 table.tablesorter thead tr .header {
-	background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/bg.gif);
+	background-image: url(<%RT->Config->Get('WebPath')%>/static/images/tablesorter/bg.gif);
 	background-repeat: no-repeat;
 	background-position: center right;
 	cursor: pointer;
@@ -42,10 +42,10 @@ table.tablesorter tbody tr.odd td {
 	background-color:#F0F0F6;
 }
 table.tablesorter thead tr .headerSortUp {
-	background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/asc.gif);
+	background-image: url(<%RT->Config->Get('WebPath')%>/static/images/tablesorter/asc.gif);
 }
 table.tablesorter thead tr .headerSortDown {
-	background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/tablesorter/desc.gif);
+	background-image: url(<%RT->Config->Get('WebPath')%>/static/images/tablesorter/desc.gif);
 }
 table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp {
 background-color: #8dbdd8;
diff --git a/share/html/NoAuth/css/base/ticket.css b/share/html/NoAuth/css/base/ticket.css
index 4865653..1c40229 100644
--- a/share/html/NoAuth/css/base/ticket.css
+++ b/share/html/NoAuth/css/base/ticket.css
@@ -58,7 +58,7 @@
 }
 
 #requestor-accordion h3 .ui-icon {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/jquery_ui/ui-icons_4488cc_256x240.png);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/images/jquery_ui/ui-icons_4488cc_256x240.png);
     left: 0;
 }
 
diff --git a/share/html/NoAuth/css/web2/boxes.css b/share/html/NoAuth/css/web2/boxes.css
index 3c87c8d..785bf41 100644
--- a/share/html/NoAuth/css/web2/boxes.css
+++ b/share/html/NoAuth/css/web2/boxes.css
@@ -170,7 +170,7 @@
   margin-top: 0.6em;
   width: 20px;
 
-  background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rollup-arrow.gif) no-repeat center 0;
+  background: url(<%RT->Config->Get('WebPath')%>/static/images/css/rollup-arrow.gif) no-repeat center 0;
 
   position: absolute;
   top: -1em;
@@ -187,5 +187,5 @@
 }
 
 .titlebox.rolled-up .titlebox-title .widget a {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/css/rolldown-arrow.gif);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/images/css/rolldown-arrow.gif);
 }
diff --git a/share/html/NoAuth/css/web2/layout.css b/share/html/NoAuth/css/web2/layout.css
index 72a74e9..c1d8d83 100644
--- a/share/html/NoAuth/css/web2/layout.css
+++ b/share/html/NoAuth/css/web2/layout.css
@@ -50,7 +50,7 @@
 body {
     padding:0;
     margin:0;
-    background: #547CCC url(<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/images/background-gradient.png) top left repeat-x ;
+    background: #547CCC url(<%RT->Config->Get('WebPath')%>/static/css/web2/images/background-gradient.png) top left repeat-x ;
     font-family: arial, helvetica, sans-serif;
     color: #000000;
 }
@@ -106,7 +106,7 @@ div#footer #time {
 
 div#footer #bpscredits {
  text-align: right;
- background: url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+ background: url(<%RT->Config->Get('WebPath')%>/static/images/bpslogo.png) no-repeat top right;
  padding-top: 4em;
 }
 
diff --git a/share/html/NoAuth/css/web2/msie6.css b/share/html/NoAuth/css/web2/msie6.css
index a632750..2b57ac0 100644
--- a/share/html/NoAuth/css/web2/msie6.css
+++ b/share/html/NoAuth/css/web2/msie6.css
@@ -87,10 +87,10 @@ div#page-navigation {
 }
 
 #prefs-menu .sf-sub-indicator {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.gif);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-grey.gif);
 }
 
 #app-nav .sf-sub-indicator {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.gif);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-grey.gif);
 }
 
diff --git a/share/html/NoAuth/css/web2/nav.css b/share/html/NoAuth/css/web2/nav.css
index e404b61..caa95e4 100644
--- a/share/html/NoAuth/css/web2/nav.css
+++ b/share/html/NoAuth/css/web2/nav.css
@@ -64,7 +64,7 @@
 }
 
 .sf-sub-indicator {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-grey.png);
     margin-top: -3px;
 }
 
@@ -98,7 +98,7 @@
 }
 
 #prefs-menu .sf-sub-indicator {
-    background-image: url(<%RT->Config->Get('WebPath')%>/NoAuth/css/images/arrows-grey.png);
+    background-image: url(<%RT->Config->Get('WebPath')%>/static/css/images/arrows-grey.png);
     margin-top: 0;
 }
 
diff --git a/share/html/NoAuth/js/util.js b/share/html/NoAuth/js/util.js
index 6e045a4..eef7ab6 100644
--- a/share/html/NoAuth/js/util.js
+++ b/share/html/NoAuth/js/util.js
@@ -311,7 +311,7 @@ function ReplaceAllTextareas(encoded) {
 
 
             CKEDITOR.replace(textArea.name,{width:'100%',height:<% RT->Config->Get('MessageBoxRichTextHeight') |n,j%>});
-            CKEDITOR.basePath = <%RT->Config->Get('WebPath')|n,j%>+"/NoAuth/RichText/";
+            CKEDITOR.basePath = <%RT->Config->Get('WebPath')|n,j%>+"/static/RichText/";
 
             jQuery("#" + textArea.name + "___Frame").addClass("richtext-editor");
         }
diff --git a/share/html/Ticket/Elements/Bookmark b/share/html/Ticket/Elements/Bookmark
index 21c8104..ca7d7c1 100644
--- a/share/html/Ticket/Elements/Bookmark
+++ b/share/html/Ticket/Elements/Bookmark
@@ -65,9 +65,9 @@ $Toggle => 0
 % my $url = RT->Config->Get('WebPath') ."/Helpers/Toggle/TicketBookmark?id=". $id;
 <a align="right" href="<% $url %>" onclick="jQuery('.toggle-bookmark-'+<% $id |n,j%>).load(<% $url |n,j %>); return false;" >
 % if ( $is_bookmarked ) {
-<img src="<% RT->Config->Get('WebPath') %>/NoAuth/images/star.gif" alt="<% loc('Remove Bookmark') %>" style="border-style: none" />
+<img src="<% RT->Config->Get('WebPath') %>/static/images/star.gif" alt="<% loc('Remove Bookmark') %>" style="border-style: none" />
 % } else {
-<img src="<% RT->Config->Get('WebPath') %>/NoAuth/images/empty_star.gif" alt="<% loc('Add Bookmark') %>" style="border-style: none" />
+<img src="<% RT->Config->Get('WebPath') %>/static/images/empty_star.gif" alt="<% loc('Add Bookmark') %>" style="border-style: none" />
 % }
 </a>
 </span>
diff --git a/share/html/m/_elements/raw_style b/share/html/m/_elements/raw_style
index e19e2a6..e199897 100644
--- a/share/html/m/_elements/raw_style
+++ b/share/html/m/_elements/raw_style
@@ -369,7 +369,7 @@ div#login-box input[type=text], div#login-box input[type=password] {
 
 #bpscredits #copyright {
     padding-top: 4em;
-    background: white url(<%RT->Config->Get('WebPath')%>/NoAuth/images/bpslogo.png) no-repeat top right;
+    background: white url(<%RT->Config->Get('WebPath')%>/static/images/bpslogo.png) no-repeat top right;
 }
 
 
diff --git a/t/api/attachment_filename.t b/t/api/attachment_filename.t
index 6bfc707..aa8acd2 100644
--- a/t/api/attachment_filename.t
+++ b/t/api/attachment_filename.t
@@ -10,18 +10,18 @@ my $mime   = MIME::Entity->build(
 );
 
 $mime->attach(
-    Path     => 'share/html/NoAuth/images/bpslogo.png',
+    Path     => 'share/static/images/bpslogo.png',
     Type     => 'image/png',
 );
 
 $mime->attach(
-    Path     => 'share/html/NoAuth/images/bpslogo.png',
+    Path     => 'share/static/images/bpslogo.png',
     Type     => 'image/png',
     Filename => 'bpslogo.png',
 );
 
 $mime->attach(
-    Path     => 'share/html/NoAuth/images/bpslogo.png',
+    Path     => 'share/static/images/bpslogo.png',
     Filename => 'images/bpslogo.png',
     Type     => 'image/png',
 );
diff --git a/t/articles/upload-customfields.t b/t/articles/upload-customfields.t
index e5ed5d1..c75fbcf 100644
--- a/t/articles/upload-customfields.t
+++ b/t/articles/upload-customfields.t
@@ -8,12 +8,12 @@ use RT;
 my $logo;
 BEGIN {
     $logo =
-      -e $RT::MasonComponentRoot . '/NoAuth/images/bpslogo.png'
+      -e $RT::StaticPath . '/images/bpslogo.png'
       ? 'bpslogo.png'
       : 'bplogo.gif';
 }
 
-use constant ImageFile => $RT::MasonComponentRoot . "/NoAuth/images/$logo";
+use constant ImageFile => $RT::StaticPath . "/images/$logo";
 
 use constant ImageFileContent => do {
     local $/;
diff --git a/t/data/configs/apache2.2+fastcgi.conf.in b/t/data/configs/apache2.2+fastcgi.conf.in
index 03eaa9a..31f1dd7 100644
--- a/t/data/configs/apache2.2+fastcgi.conf.in
+++ b/t/data/configs/apache2.2+fastcgi.conf.in
@@ -34,7 +34,7 @@ FastCgiServer %%RT_SBIN_PATH%%/rt-server.fcgi \
     -initial-env RT_SITE_CONFIG=%%RT_SITE_CONFIG%% \
     -initial-env RT_TESTING=1
 
-Alias /NoAuth/images/ %%DOCUMENT_ROOT%%/NoAuth/images/
+Alias /static/images/ %%DOCUMENT_ROOT%%/static/images/
 ScriptAlias / %%RT_SBIN_PATH%%/rt-server.fcgi/
 
 DocumentRoot "%%DOCUMENT_ROOT%%"
diff --git a/t/mail/gateway.t b/t/mail/gateway.t
index 7358468..faabfeb 100644
--- a/t/mail/gateway.t
+++ b/t/mail/gateway.t
@@ -420,7 +420,7 @@ EOF
 diag "Testing preservation of binary attachments";
 {
     # Get a binary blob (Best Practical logo) 
-    my $LOGO_FILE = $RT::MasonComponentRoot .'/NoAuth/images/bpslogo.png';
+    my $LOGO_FILE = $RT::StaticPath .'/images/bpslogo.png';
 
     # Create a mime entity with an attachment
     my $entity = MIME::Entity->build(
diff --git a/t/web/attachments.t b/t/web/attachments.t
index b518ec1..ba5c712 100644
--- a/t/web/attachments.t
+++ b/t/web/attachments.t
@@ -3,8 +3,8 @@ use warnings;
 
 use RT::Test tests => 33;
 
-use constant LogoFile => $RT::MasonComponentRoot .'/NoAuth/images/bpslogo.png';
-use constant FaviconFile => $RT::MasonComponentRoot .'/NoAuth/images/favicon.png';
+use constant LogoFile => $RT::StaticPath .'/images/bpslogo.png';
+use constant FaviconFile => $RT::StaticPath .'/images/favicon.png';
 use constant TextFile => $RT::MasonComponentRoot .'/NoAuth/css/print.css';
 
 my ($baseurl, $m) = RT::Test->started_ok;
diff --git a/t/web/basic.t b/t/web/basic.t
index e61e80e..a8d3fd8 100644
--- a/t/web/basic.t
+++ b/t/web/basic.t
@@ -78,10 +78,10 @@ my $url = $agent->rt_base_url;
 
 TODO: {
     todo_skip("Need to handle mason trying to compile images",1);
-$agent->get( $url."NoAuth/images/test.png" );
+$agent->get( $url."static/images/test.png" );
 my $file = RT::Test::get_relocatable_file(
   File::Spec->catfile(
-    qw(.. .. share html NoAuth images test.png)
+    qw(.. .. share static images test.png)
   )
 );
 is(
diff --git a/t/web/cf_access.t b/t/web/cf_access.t
index 675fa21..ec095c0 100644
--- a/t/web/cf_access.t
+++ b/t/web/cf_access.t
@@ -5,7 +5,7 @@ use RT::Test tests => 32;
 
 my ($baseurl, $m) = RT::Test->started_ok;
 
-use constant ImageFile => $RT::MasonComponentRoot .'/NoAuth/images/bpslogo.png';
+use constant ImageFile => $RT::StaticPath .'/images/bpslogo.png';
 use constant ImageFileContent => RT::Test->file_content(ImageFile);
 
 ok $m->login, 'logged in';
diff --git a/t/web/command_line.t b/t/web/command_line.t
index 7c444f4..8285552 100644
--- a/t/web/command_line.t
+++ b/t/web/command_line.t
@@ -124,7 +124,7 @@ ok($val,$msg);
     # text attachment
     check_attachment($test_email);
     # binary attachment
-    check_attachment($RT::MasonComponentRoot.'/NoAuth/images/bpslogo.png');
+    check_attachment($RT::StaticPath . '/images/bpslogo.png');
 
 # change a ticket's Owner
 expect_send("edit ticket/$ticket_id set owner=root", 'Changing owner...');
diff --git a/t/web/csrf.t b/t/web/csrf.t
index bdafd55..753bef5 100644
--- a/t/web/csrf.t
+++ b/t/web/csrf.t
@@ -136,7 +136,7 @@ $m->content_contains("Create a new ticket", 'ticket create page');
 $m->form_name('TicketCreate');
 $m->field('Subject', 'Attachments test');
 
-my $logofile = "$RT::MasonComponentRoot/NoAuth/images/bpslogo.png";
+my $logofile = "$RT::StaticPath/images/bpslogo.png";
 open LOGO, "<", $logofile or die "Can't open logo file: $!";
 binmode LOGO;
 my $logo_contents = do {local $/; <LOGO>};

commit 40da393e54c7e30924c3676d34d8cb97aaa9e08f
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:27:51 2012 -0500

    Adjust and remove tests which dealt with static-through-Mason work-arounds

diff --git a/t/web/basic.t b/t/web/basic.t
index a8d3fd8..cea0d07 100644
--- a/t/web/basic.t
+++ b/t/web/basic.t
@@ -76,8 +76,6 @@ my $url = $agent->rt_base_url;
 }
 
 
-TODO: {
-    todo_skip("Need to handle mason trying to compile images",1);
 $agent->get( $url."static/images/test.png" );
 my $file = RT::Test::get_relocatable_file(
   File::Spec->catfile(
@@ -89,7 +87,6 @@ is(
     -s $file,
     "got a file of the correct size ($file)",
 );
-}
 
 #
 # XXX: hey-ho, we have these tests in t/web/query-builder
diff --git a/t/web/path-traversal.t b/t/web/path-traversal.t
index 5d5c954..cb44125 100644
--- a/t/web/path-traversal.t
+++ b/t/web/path-traversal.t
@@ -1,35 +1,29 @@
 use strict;
 use warnings;
 
-use RT::Test tests => 22;
+use RT::Test tests => undef;
 
 my ($baseurl, $agent) = RT::Test->started_ok;
 
 $agent->get("$baseurl/NoAuth/../Elements/HeaderJavascript");
 is($agent->status, 400);
-$agent->warning_like(qr/Invalid request.*aborting/,);
+$agent->warning_like(qr/Invalid request.*aborting/);
 
 $agent->get("$baseurl/NoAuth/../%45lements/HeaderJavascript");
 is($agent->status, 400);
-$agent->warning_like(qr/Invalid request.*aborting/,);
+$agent->warning_like(qr/Invalid request.*aborting/);
 
 $agent->get("$baseurl/NoAuth/%2E%2E/Elements/HeaderJavascript");
 is($agent->status, 400);
-$agent->warning_like(qr/Invalid request.*aborting/,);
+$agent->warning_like(qr/Invalid request.*aborting/);
 
 $agent->get("$baseurl/NoAuth/../../../etc/RT_Config.pm");
 is($agent->status, 400);
-SKIP: {
-    skip "Apache rejects busting up above / for us", 2 if $ENV{RT_TEST_WEB_HANDLER} =~ /^apache/;
-    $agent->warning_like(qr/Invalid request.*aborting/,);
-};
+$agent->warning_like(qr/Invalid request.*aborting/) unless $ENV{RT_TEST_WEB_HANDLER} =~ /^apache/;
 
-$agent->get("$baseurl/NoAuth/css/web2/images/../../../../../../etc/RT_Config.pm");
-is($agent->status, 400);
-SKIP: {
-    skip "Apache rejects busting up above / for us", 2 if $ENV{RT_TEST_WEB_HANDLER} =~ /^apache/;
-    $agent->warning_like(qr/Invalid request.*aborting/,);
-};
+$agent->get("$baseurl/static/css/web2/images/../../../../../../etc/RT_Config.pm");
+# Apache hardcodes a 400m but the static handler returns a 403 for traversal too high
+is($agent->status, $ENV{RT_TEST_WEB_HANDLER} =~ /^apache/ ? 400 : 403);
 
 # do not reject these URLs, even though they contain /. outside the path
 $agent->get("$baseurl/index.html?ignored=%2F%2E");
@@ -44,3 +38,4 @@ is($agent->status, 200);
 $agent->get("$baseurl/index.html#/.");
 is($agent->status, 200);
 
+done_testing;
diff --git a/t/web/richtext-autohandler.t b/t/web/richtext-autohandler.t
deleted file mode 100644
index 724a7b3..0000000
--- a/t/web/richtext-autohandler.t
+++ /dev/null
@@ -1,14 +0,0 @@
-use strict;
-use warnings;
-
-use RT::Test tests => 9;
-my ($baseurl, $agent) = RT::Test->started_ok;
-
-$agent->get("$baseurl/NoAuth/RichText/ckeditor/config.js");
-is($agent->status, 403);
-$agent->content_lacks("config.disableNativeSpellChecker");
-
-$agent->get_ok("/NoAuth/RichText/config.js");
-$agent->content_contains("config.disableNativeSpellChecker");
-
-$agent->warning_like(qr/Invalid request directly to the rich text editor/,);

commit b44f877ff24b1a0d8ce9f10abd95209b203a074e
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 19:03:19 2012 -0500

    Adjust policy tests to account for share/html/ having no images

diff --git a/t/99-policy.t b/t/99-policy.t
index 4413040..35b5cc6 100644
--- a/t/99-policy.t
+++ b/t/99-policy.t
@@ -99,7 +99,10 @@ check( $_, shebang => 1, exec => 1, warnings => 1, strict => 1, bps_tag => 1 )
 check( $_, shebang => 1, exec => 1, warnings => 1, strict => 1, bps_tag => 1 )
     for grep {m{^devel/tools/} and not m{/(localhost\.(crt|key)|mime\.types)$}} @files;
 
-check( $_, exec => -1, bps_tag => not m{\.(png|gif|jpe?g)$} )
+check( $_, exec => -1 )
+    for grep {m{^share/static/}} @files;
+
+check( $_, exec => -1, bps_tag => 1 )
     for grep {m{^share/html/}} @files;
 
 check( $_, exec => -1 )

commit f23af020355a7604c5db76269f09cc269db83926
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Wed Dec 19 20:25:34 2012 -0500

    Update deployment configurations to remove Alias lines
    
    As /static/ is not a single directory, but an overlayed union of the
    plugins, local overrides, and core statici files, a simple Apache
    "Alias" line cannot produce the same complexity as the static
    middleware.  Remove the Alias lines (and equivalent) and allow RT to
    serve the static files itself.
    
    This also has performance implications.  Some simple testing under
    Apache with apachebench, with 5000 requests to a single-process server
    on localhost with hot caches is below.  Previous to this branch:
    
                                        | mod_perl | fastcgi
    ------------------------------------+----------+---------
    /NoAuth/RichText/ckeditor.js        |   19.3ms |  17.8ms
    /NoAuth/images/farbtastic/wheel.png |   18.3ms |   0.4ms
    
    Only /NoAuth/images/ was served via Alias, and only under fastcgi, due
    to a misconfiguration in our suggested deployment -- namely the lack of
    'SetHandler default' in a '<Location /NoAuth/images>' section.  The
    files were chosen to be the largest that we serve in each category.
    
    After this branch:
                                        | mod_perl | fastcgi
    ------------------------------------+----------+---------
    /static/RichText/ckeditor.js        |    2.9ms |   3.9ms
    /static/images/farbtastic/wheel.png |    1.8ms |   1.7ms
    
    That is, this provides an order-of-magnitude speedup on ckeditor.js on
    both mod_perl and fastcgi, and an order-of-magnitude speedup under
    mod_perl for images, at the cost of an order of magnitude for images
    under fastcgi.  However, other clear optimization paths exist for the
    static file middleware (Plack::Middleware::XSendfile, cache headers),
    which will benefit all deployments.

diff --git a/devel/tools/rt-apache b/devel/tools/rt-apache
index af87ed2..b78933a 100755
--- a/devel/tools/rt-apache
+++ b/devel/tools/rt-apache
@@ -330,12 +330,6 @@ DocumentRoot $RTHOME/share/html
     Allow from all
 </Directory>
 
-Alias $PATH/NoAuth/images/ $RTHOME/share/html/NoAuth/images/
-<Directory $RTHOME/share/html/NoAuth/images>
-    Order allow,deny
-    Allow from all
-</Directory>
-
 <IfDefine !RT3>
 ########## 4.0 mod_perl
 <IfDefine PERL>
diff --git a/docs/web_deployment.pod b/docs/web_deployment.pod
index 355f6ce..bd466e8 100644
--- a/docs/web_deployment.pod
+++ b/docs/web_deployment.pod
@@ -52,7 +52,6 @@ spontaneously logged in as other users in the system.
 
         AddDefaultCharset UTF-8
 
-        Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
         ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
 
         DocumentRoot "/opt/rt4/share/html"
@@ -89,7 +88,6 @@ to return to the old default.
 
         AddDefaultCharset UTF-8
 
-        Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
         ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
 
         DocumentRoot "/opt/rt4/share/html"
@@ -186,10 +184,6 @@ With the nginx configuration:
             fastcgi_param  SERVER_NAME        $server_name;
             fastcgi_pass 127.0.0.1:9000;
         }
-
-        location /NoAuth/images {
-            root /opt/rt4/share/html;
-        }
     }
 
 
@@ -197,21 +191,16 @@ With the nginx configuration:
 
     server.modules += ( "mod_fastcgi" )
     $HTTP["host"] =~ "^rt.example.com" {
-        alias.url = (
-            "/NoAuth/images/" => "/opt/rt4/share/html/NoAuth/images/",
-        )
-        $HTTP["url"] !~ "^/NoAuth/images/" {
-            fastcgi.server = (
-                "/" => (
-                    "rt" => (
-                        "port"        => "9000",
-                        "bin-path"    => "/opt/rt4/sbin/rt-server.fcgi",
-                        "check-local" => "disable",
-                        "fix-root-scriptname" => "enable",
-                    )
+        fastcgi.server = (
+            "/" => (
+                "rt" => (
+                    "port"        => "9000",
+                    "bin-path"    => "/opt/rt4/sbin/rt-server.fcgi",
+                    "check-local" => "disable",
+                    "fix-root-scriptname" => "enable",
                 )
             )
-        }
+        )
     }
 
 
@@ -225,14 +214,13 @@ F<RT_SiteConfig.pm>:
     Set($WebPath, "/rt");
 
 Then you need to update your Apache configuration to match.  Prefix any RT
-related C<Alias>, C<ScriptAlias> and C<Location> directives with C</rt>.  You
+related C<ScriptAlias> and C<Location> directives with C</rt>.  You
 should also make sure C<DocumentRoot> is B<not> set to
 C</opt/rt4/share/html/>, otherwise RT's source will be served from C</>.
 
 For example: if you're using the sample FastCGI config above, you might change
 the relevant directives to:
 
-    Alias /rt/NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
     ScriptAlias /rt /opt/rt4/sbin/rt-server.fcgi/
 
     # Set DocumentRoot as appropriate for the other content you want to serve
diff --git a/t/data/configs/apache2.2+fastcgi.conf.in b/t/data/configs/apache2.2+fastcgi.conf.in
index 31f1dd7..329b056 100644
--- a/t/data/configs/apache2.2+fastcgi.conf.in
+++ b/t/data/configs/apache2.2+fastcgi.conf.in
@@ -34,7 +34,6 @@ FastCgiServer %%RT_SBIN_PATH%%/rt-server.fcgi \
     -initial-env RT_SITE_CONFIG=%%RT_SITE_CONFIG%% \
     -initial-env RT_TESTING=1
 
-Alias /static/images/ %%DOCUMENT_ROOT%%/static/images/
 ScriptAlias / %%RT_SBIN_PATH%%/rt-server.fcgi/
 
 DocumentRoot "%%DOCUMENT_ROOT%%"

-----------------------------------------------------------------------


More information about the Rt-commit mailing list