Koha/koha-tmpl/opac-tmpl/lib/greybox/GreyBox_v5_5/combiner.py
Owen Leonard 70e80bb4c8
Bug 32998: Consolidate opac-tmpl/lib and opac-tmpl/bootstrap/lib
This patch moves OPAC third-party assets from opac-tmpl/bootstrap/lib
to opac-tmpl/lib, eliminating some redundancy and making it simpler
to understand where such assets should be found.

To test, apply the patch and confirm that there is no longer a lib
directory under opac-tmpl/bootstrap.

Test various parts of the OPAC to confirm that assets are still loading
correctly. Everything should look right and work correctly. The
browser's developer console should be free of errors.

Signed-off-by: Philip Orr <philip.orr@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-04-13 11:47:57 -03:00

134 lines
3.7 KiB
Python

#!/usr/bin/env python
"""
Used to combine the different parts of GreyBox.
- Python 2.4 required
- Java 1.4+ required
- Dojo's JavaScript compressor (http://dojotoolkit.org/docs/compressor_system.html). Place it under compression_lib/custom_rhino.jar
"""
import os, sys, shutil
from compression_lib import AJS_minify
if __name__ == '__main__':
args = sys.argv
if len(args) < 2:
print """
Usage is:
python combiner.py [full|gallery|window]
Example usage:
python combiner.py full
The files will be store in greybox_dist/* depending on the dist. type
"""
sys.exit(0)
type = args[1]
output_dir = 'greybox'
##
# Config file list
#
js = []
css = []
static = []
append = lambda l, x: l.append('greybox_source/%s' % x)
def appendBase():
append(js, 'base/base.js')
append(js, 'auto_deco.js')
append(css, 'base/base.css')
append(static, 'base/indicator.gif')
append(static, 'base/loader_frame.html')
def appendSet():
append(js, 'set/set.js')
append(css, 'set/set.css')
append(static, 'set/next.gif')
append(static, 'set/prev.gif')
def appendGallery():
append(js, 'gallery/gallery.js')
append(css, 'gallery/gallery.css')
append(static, 'gallery/g_close.gif')
def appendWindow():
append(js, 'window/window.js')
append(css, 'window/window.css')
append(static, 'window/header_bg.gif')
append(static, 'window/w_close.gif')
appendBase()
if type == 'full':
appendGallery()
appendSet()
appendWindow()
elif type == 'gallery':
appendGallery()
appendSet()
elif type == 'window':
appendWindow()
else:
sys.exit('Uknown type')
print 'Follwoing styles are used:'
for style in css:
print ' %s' % style
print 'Follwoing JavaScript is used:'
for script in js:
print ' %s' % script
##
# Copy the files
#
try:
shutil.rmtree(output_dir)
except:
pass
os.mkdir(output_dir)
def concatFiles(f_list):
data = []
for f in f_list:
data.append(open(f, 'r').read())
return '\n\n'.join(data)
def copyFiles(f_list):
for f in f_list:
shutil.copy(f, output_dir)
copyFiles(static)
fp = open('%s/%s' % (output_dir, 'gb_styles.css'), 'w')
fp.write(concatFiles(css))
fp.close()
print 'Compressed styles in %s' % ('greybox/gb_styles.css')
##
# Concat js
#
fp = open('%s/%s' % (output_dir, 'gb_scripts_tmp.js'), 'w')
fp.write(concatFiles(js))
fp.close()
AJS_minify.AJS_SRC = 'greybox_source/base/AJS.js'
AJS_minify.AJS_MINI_SRC = 'greybox/AJS_tmp.js'
files = ['greybox/gb_scripts_tmp.js', 'greybox_source/base/AJS_fx.js', 'static_files/help.js']
code_analyzer = AJS_minify.ExternalCodeAnalyzer(files)
composer = AJS_minify.AjsComposer(code_analyzer.findFunctions())
composer.writeToOutput()
os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/AJS_tmp.js > greybox/AJS.js')
os.remove('greybox/AJS_tmp.js')
os.popen('java -jar compression_lib/custom_rhino.jar -c greybox_source/base/AJS_fx.js > greybox/AJS_fx.js')
print 'Compressed AJS.js and AJS.js into greybox/'
os.popen('java -jar compression_lib/custom_rhino.jar -c greybox/gb_scripts_tmp.js > greybox/gb_scripts.js')
os.remove('greybox/gb_scripts_tmp.js')
print 'Compressed JavaScript in %s' % ('greybox/gb_scripts.css')
#Append script_loaded
open('greybox/AJS.js', 'a').write('\nscript_loaded=true;')
open('greybox/AJS_fx.js', 'a').write('\nscript_loaded=true;')
open('greybox/gb_scripts.js', 'a').write('\nscript_loaded=true;')