build static, move js files
This commit is contained in:
parent
2c378e46ea
commit
7586f2746a
65 changed files with 146 additions and 116 deletions
0
pandora/app/management/__init__.py
Normal file
0
pandora/app/management/__init__.py
Normal file
0
pandora/app/management/commands/__init__.py
Normal file
0
pandora/app/management/commands/__init__.py
Normal file
15
pandora/app/management/commands/update_static.py
Normal file
15
pandora/app/management/commands/update_static.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vi:si:et:sw=4:sts=4:ts=4
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
from ... import models
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
help = 'update static files'
|
||||||
|
args = ''
|
||||||
|
|
||||||
|
def handle(self, **options):
|
||||||
|
models.update_static()
|
|
@ -10,6 +10,7 @@ import thread
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import ox.jsonc
|
import ox.jsonc
|
||||||
|
from ox.utils import json
|
||||||
|
|
||||||
_win = (sys.platform == "win32")
|
_win = (sys.platform == "win32")
|
||||||
|
|
||||||
|
@ -52,3 +53,28 @@ def reloader_thread():
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
thread.start_new_thread(reloader_thread, ())
|
thread.start_new_thread(reloader_thread, ())
|
||||||
|
|
||||||
|
def update_static():
|
||||||
|
oxjs_build = os.path.join(settings.STATIC_ROOT, 'oxjs/tools/build/build.py')
|
||||||
|
if os.path.exists(oxjs_build):
|
||||||
|
os.system(oxjs_build)
|
||||||
|
|
||||||
|
data = ''
|
||||||
|
js = []
|
||||||
|
pandora_js = os.path.join(settings.STATIC_ROOT, 'js/pandora.js')
|
||||||
|
pandora_json = os.path.join(settings.STATIC_ROOT, 'json/pandora.json')
|
||||||
|
for root, folders, files in os.walk(os.path.join(settings.STATIC_ROOT, 'js/pandora')):
|
||||||
|
for f in files:
|
||||||
|
js.append(os.path.join(root, f)[len(settings.STATIC_ROOT)+1:])
|
||||||
|
with open(os.path.join(root, f)) as j:
|
||||||
|
data += j.read() + '\n'
|
||||||
|
|
||||||
|
print 'write', pandora_js
|
||||||
|
with open(pandora_js, 'w') as f:
|
||||||
|
#data = ox.js.minify(data)
|
||||||
|
f.write(data)
|
||||||
|
|
||||||
|
print 'write', pandora_json
|
||||||
|
with open(pandora_json, 'w') as f:
|
||||||
|
json.dump(sorted(js), f, indent=2)
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
<link rel="shortcut icon" type="image/png" href="/static/png/icon16.png"/>
|
<link rel="shortcut icon" type="image/png" href="/static/png/icon16.png"/>
|
||||||
<link rel="stylesheet" type="text/css" href="/static/css/highlight.css"/>
|
<link rel="stylesheet" type="text/css" href="/static/css/highlight.css"/>
|
||||||
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/highlight.pack.js"></script>
|
<script type="text/javascript" src="/static/js/api/highlight.pack.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/pandora.api.js"></script>
|
<script type="text/javascript" src="/static/js/api/pandora.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body></body>
|
<body></body>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title>{{settings.SITENAME}}</title>
|
<title>{{settings.SITENAME}}</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||||
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/pandoraEmbed.js"></script>
|
<script type="text/javascript" src="/static/js/embed/pandora.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="/static/oxjs/dev/Ox.js"></script>
|
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
||||||
<script type="text/javascript" src="/static/js/pandora.js"></script>
|
<script type="text/javascript" src="/static/js/init.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body></body>
|
<body></body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -29,7 +29,7 @@ Ox.load({
|
||||||
hideScreen: false,
|
hideScreen: false,
|
||||||
loadImages: true,
|
loadImages: true,
|
||||||
showScreen: true,
|
showScreen: true,
|
||||||
theme: 'modern'
|
theme: localStorage?localStorage.theme:'modern'
|
||||||
},
|
},
|
||||||
Geo: {}
|
Geo: {}
|
||||||
}, function(browserSupported) {
|
}, function(browserSupported) {
|
||||||
|
@ -54,7 +54,7 @@ Ox.load({
|
||||||
ui: {}
|
ui: {}
|
||||||
});
|
});
|
||||||
|
|
||||||
loadResources('/static/json/pandora.json', function() {
|
loadResources(function() {
|
||||||
|
|
||||||
Ox.print('Ox.App load', data);
|
Ox.print('Ox.App load', data);
|
||||||
|
|
||||||
|
@ -144,20 +144,16 @@ Ox.load({
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}, '/static/'); // fixme: why does loadResources have an argument after callback????
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function loadResources(json, callback, prefix) {
|
function loadResources(callback) {
|
||||||
prefix = prefix || '';
|
var prefix = '/static/';
|
||||||
$.getJSON(json, function(files) {
|
if(localStorage && localStorage.debug) {
|
||||||
|
Ox.getJSON(prefix + 'json/pandora.json', function(files) {
|
||||||
var promises = [];
|
var promises = [];
|
||||||
files.forEach(function(file) {
|
files.forEach(function(file) {
|
||||||
// fixme: opera doesnt fire onload for svgs
|
|
||||||
// (but neither do we support opera nor do we have svgs)
|
|
||||||
if ($.browser.opera && Ox.endsWith(file, '.svg')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var dfd = new $.Deferred();
|
var dfd = new $.Deferred();
|
||||||
promises.push(dfd.promise());
|
promises.push(dfd.promise());
|
||||||
Ox.loadFile(prefix + file, function() {
|
Ox.loadFile(prefix + file, function() {
|
||||||
|
@ -169,9 +165,12 @@ Ox.load({
|
||||||
callback();
|
callback();
|
||||||
})
|
})
|
||||||
.fail(function() {
|
.fail(function() {
|
||||||
throw new Error('File not found.')
|
throw new Error('File not found.');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
Ox.loadFile(prefix + 'js/pandora.js', callback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
|
@ -28,6 +28,7 @@ pandora.ui.item = function() {
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (['video', 'timeline'].indexOf(pandora.user.ui.itemView) > -1) {
|
if (['video', 'timeline'].indexOf(pandora.user.ui.itemView) > -1) {
|
||||||
|
// fixme: layers have value, subtitles has text?
|
||||||
var subtitles = result.data.layers.subtitles
|
var subtitles = result.data.layers.subtitles
|
||||||
? result.data.layers.subtitles.map(function(subtitle) {
|
? result.data.layers.subtitles.map(function(subtitle) {
|
||||||
return {'in': subtitle['in'], out: subtitle.out, text: subtitle.value};
|
return {'in': subtitle['in'], out: subtitle.out, text: subtitle.value};
|
||||||
|
@ -54,7 +55,19 @@ pandora.ui.item = function() {
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
: [{'in': 0, out: result.data.duration}];
|
: [{'in': 0, out: result.data.duration}],
|
||||||
|
layers = [],
|
||||||
|
video = {};
|
||||||
|
|
||||||
|
pandora.site.layers.forEach(function(layer, i) {
|
||||||
|
layers[i] = Ox.extend({}, layer, {items: result.data.layers[layer.id]});
|
||||||
|
});
|
||||||
|
pandora.site.video.resolutions.forEach(function(resolution) {
|
||||||
|
video[resolution] = Ox.range(result.data.parts).map(function(i) {
|
||||||
|
return '/' + pandora.user.ui.item + '/'
|
||||||
|
+ resolution + 'p' + (i + 1) + '.' + pandora.user.videoFormat;
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result.data.rendered && [
|
if (!result.data.rendered && [
|
||||||
|
@ -135,18 +148,7 @@ pandora.ui.item = function() {
|
||||||
} else if (pandora.user.ui.itemView == 'video') {
|
} else if (pandora.user.ui.itemView == 'video') {
|
||||||
// fixme: duplicated
|
// fixme: duplicated
|
||||||
var clipsQuery = pandora.getClipsQuery(),
|
var clipsQuery = pandora.getClipsQuery(),
|
||||||
isClipsQuery = !!clipsQuery.conditions.length,
|
isClipsQuery = !!clipsQuery.conditions.length;
|
||||||
layers = [],
|
|
||||||
video = {};
|
|
||||||
pandora.site.layers.forEach(function(layer, i) {
|
|
||||||
layers[i] = Ox.extend({}, layer, {items: result.data.layers[layer.id]});
|
|
||||||
});
|
|
||||||
pandora.site.video.resolutions.forEach(function(resolution) {
|
|
||||||
video[resolution] = Ox.range(result.data.parts).map(function(i) {
|
|
||||||
return '/' + pandora.user.ui.item + '/'
|
|
||||||
+ resolution + 'p' + (i + 1) + '.' + pandora.user.videoFormat;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
//
|
//
|
||||||
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.player = Ox.VideoPanelPlayer({
|
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.player = Ox.VideoPanelPlayer({
|
||||||
annotationsSize: pandora.user.ui.annotationsSize,
|
annotationsSize: pandora.user.ui.annotationsSize,
|
||||||
|
@ -200,18 +202,7 @@ pandora.ui.item = function() {
|
||||||
|
|
||||||
} else if (pandora.user.ui.itemView == 'timeline') {
|
} else if (pandora.user.ui.itemView == 'timeline') {
|
||||||
var clipsQuery = pandora.getClipsQuery(),
|
var clipsQuery = pandora.getClipsQuery(),
|
||||||
isClipsQuery = !!clipsQuery.conditions.length,
|
isClipsQuery = !!clipsQuery.conditions.length;
|
||||||
layers = [],
|
|
||||||
video = {};
|
|
||||||
pandora.site.layers.forEach(function(layer) {
|
|
||||||
layers.push(Ox.extend({items: result.data.layers[layer.id]}, layer));
|
|
||||||
});
|
|
||||||
pandora.site.video.resolutions.forEach(function(resolution) {
|
|
||||||
video[resolution] = Ox.range(result.data.parts).map(function(i) {
|
|
||||||
return '/' + pandora.user.ui.item + '/'
|
|
||||||
+ resolution + 'p' + (i + 1) + '.' + pandora.user.videoFormat;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.editor = Ox.VideoEditor({
|
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.editor = Ox.VideoEditor({
|
||||||
annotationsSize: pandora.user.ui.annotationsSize,
|
annotationsSize: pandora.user.ui.annotationsSize,
|
||||||
censored: censored,
|
censored: censored,
|
||||||
|
@ -237,7 +228,6 @@ pandora.ui.item = function() {
|
||||||
posterFrame: parseInt(video.duration / 2),
|
posterFrame: parseInt(video.duration / 2),
|
||||||
showAnnotations: pandora.user.ui.showAnnotations,
|
showAnnotations: pandora.user.ui.showAnnotations,
|
||||||
showLargeTimeline: true,
|
showLargeTimeline: true,
|
||||||
// fixme: layers have value, subtitles has text?
|
|
||||||
subtitles: subtitles,
|
subtitles: subtitles,
|
||||||
tooltips: true,
|
tooltips: true,
|
||||||
video: video,
|
video: video,
|
|
@ -2,59 +2,59 @@
|
||||||
"js/pandora/Query.js",
|
"js/pandora/Query.js",
|
||||||
"js/pandora/UI.js",
|
"js/pandora/UI.js",
|
||||||
"js/pandora/URL.js",
|
"js/pandora/URL.js",
|
||||||
|
"js/pandora/account.js",
|
||||||
|
"js/pandora/appPanel.js",
|
||||||
"js/pandora/autovalidate.js",
|
"js/pandora/autovalidate.js",
|
||||||
|
"js/pandora/backButton.js",
|
||||||
|
"js/pandora/browser.js",
|
||||||
|
"js/pandora/clipList.js",
|
||||||
|
"js/pandora/clipPlayer.js",
|
||||||
|
"js/pandora/contactForm.js",
|
||||||
|
"js/pandora/contentPanel.js",
|
||||||
|
"js/pandora/deleteListDialog.js",
|
||||||
|
"js/pandora/editor.js",
|
||||||
|
"js/pandora/eventsDialog.js",
|
||||||
|
"js/pandora/filesView.js",
|
||||||
|
"js/pandora/filter.js",
|
||||||
|
"js/pandora/filterDialog.js",
|
||||||
|
"js/pandora/findElement.js",
|
||||||
|
"js/pandora/folderBrowser.js",
|
||||||
|
"js/pandora/folderBrowserBar.js",
|
||||||
|
"js/pandora/folderBrowserList.js",
|
||||||
|
"js/pandora/folderList.js",
|
||||||
|
"js/pandora/folders.js",
|
||||||
|
"js/pandora/group.js",
|
||||||
|
"js/pandora/helpDialog.js",
|
||||||
|
"js/pandora/home.js",
|
||||||
|
"js/pandora/homePage.js",
|
||||||
|
"js/pandora/info.js",
|
||||||
|
"js/pandora/infoView.js",
|
||||||
|
"js/pandora/item.js",
|
||||||
|
"js/pandora/itemClips.js",
|
||||||
|
"js/pandora/leftPanel.js",
|
||||||
|
"js/pandora/list.js",
|
||||||
|
"js/pandora/listDialog.js",
|
||||||
|
"js/pandora/mainPanel.js",
|
||||||
|
"js/pandora/mediaView.js",
|
||||||
|
"js/pandora/menu.js",
|
||||||
|
"js/pandora/namesDialog.js",
|
||||||
|
"js/pandora/navigationView.js",
|
||||||
|
"js/pandora/orderButton.js",
|
||||||
|
"js/pandora/placesDialog.js",
|
||||||
|
"js/pandora/preferencesDialog.js",
|
||||||
|
"js/pandora/publicLists.js",
|
||||||
|
"js/pandora/rightPanel.js",
|
||||||
|
"js/pandora/sectionButtons.js",
|
||||||
|
"js/pandora/sectionSelect.js",
|
||||||
|
"js/pandora/sectionbar.js",
|
||||||
|
"js/pandora/siteDialog.js",
|
||||||
|
"js/pandora/sortSelect.js",
|
||||||
|
"js/pandora/status.js",
|
||||||
|
"js/pandora/statusbar.js",
|
||||||
|
"js/pandora/titlesDialog.js",
|
||||||
|
"js/pandora/toolbar.js",
|
||||||
|
"js/pandora/usersDialog.js",
|
||||||
"js/pandora/utils.js",
|
"js/pandora/utils.js",
|
||||||
"js/pandora/ui/filesView.js",
|
"js/pandora/videoPreview.js",
|
||||||
"js/pandora/ui/account.js",
|
"js/pandora/viewSelect.js"
|
||||||
"js/pandora/ui/appPanel.js",
|
|
||||||
"js/pandora/ui/backButton.js",
|
|
||||||
"js/pandora/ui/browser.js",
|
|
||||||
"js/pandora/ui/clipList.js",
|
|
||||||
"js/pandora/ui/contentPanel.js",
|
|
||||||
"js/pandora/ui/contactForm.js",
|
|
||||||
"js/pandora/ui/deleteListDialog.js",
|
|
||||||
"js/pandora/ui/editor.js",
|
|
||||||
"js/pandora/ui/eventsDialog.js",
|
|
||||||
"js/pandora/ui/titlesDialog.js",
|
|
||||||
"js/pandora/ui/filter.js",
|
|
||||||
"js/pandora/ui/filterDialog.js",
|
|
||||||
"js/pandora/ui/findElement.js",
|
|
||||||
"js/pandora/ui/folderBrowser.js",
|
|
||||||
"js/pandora/ui/folderBrowserBar.js",
|
|
||||||
"js/pandora/ui/folderBrowserList.js",
|
|
||||||
"js/pandora/ui/folderList.js",
|
|
||||||
"js/pandora/ui/folders.js",
|
|
||||||
"js/pandora/ui/group.js",
|
|
||||||
"js/pandora/ui/home.js",
|
|
||||||
"js/pandora/ui/homePage.js",
|
|
||||||
"js/pandora/ui/info.js",
|
|
||||||
"js/pandora/ui/infoView.js",
|
|
||||||
"js/pandora/ui/item.js",
|
|
||||||
"js/pandora/ui/itemClips.js",
|
|
||||||
"js/pandora/ui/leftPanel.js",
|
|
||||||
"js/pandora/ui/list.js",
|
|
||||||
"js/pandora/ui/listDialog.js",
|
|
||||||
"js/pandora/ui/mainPanel.js",
|
|
||||||
"js/pandora/ui/mediaView.js",
|
|
||||||
"js/pandora/ui/menu.js",
|
|
||||||
"js/pandora/ui/namesDialog.js",
|
|
||||||
"js/pandora/ui/navigationView.js",
|
|
||||||
"js/pandora/ui/orderButton.js",
|
|
||||||
"js/pandora/ui/placesDialog.js",
|
|
||||||
"js/pandora/ui/preferencesDialog.js",
|
|
||||||
"js/pandora/ui/publicLists.js",
|
|
||||||
"js/pandora/ui/rightPanel.js",
|
|
||||||
"js/pandora/ui/sectionButtons.js",
|
|
||||||
"js/pandora/ui/sectionSelect.js",
|
|
||||||
"js/pandora/ui/sectionbar.js",
|
|
||||||
"js/pandora/ui/siteDialog.js",
|
|
||||||
"js/pandora/ui/sortSelect.js",
|
|
||||||
"js/pandora/ui/status.js",
|
|
||||||
"js/pandora/ui/statusbar.js",
|
|
||||||
"js/pandora/ui/toolbar.js",
|
|
||||||
"js/pandora/ui/usersDialog.js",
|
|
||||||
"js/pandora/ui/videoPreview.js",
|
|
||||||
"js/pandora/ui/viewSelect.js",
|
|
||||||
"js/pandora/ui/helpDialog.js",
|
|
||||||
"js/pandora/ui/clipPlayer.js"
|
|
||||||
]
|
]
|
Loading…
Reference in a new issue