forked from 0x2620/pandora
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.conf import settings
|
||||
import ox.jsonc
|
||||
from ox.utils import json
|
||||
|
||||
_win = (sys.platform == "win32")
|
||||
|
||||
|
@ -52,3 +53,28 @@ def reloader_thread():
|
|||
time.sleep(1)
|
||||
|
||||
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="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/js/highlight.pack.js"></script>
|
||||
<script type="text/javascript" src="/static/js/pandora.api.js"></script>
|
||||
<script type="text/javascript" src="/static/js/api/highlight.pack.js"></script>
|
||||
<script type="text/javascript" src="/static/js/api/pandora.js"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<title>{{settings.SITENAME}}</title>
|
||||
<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/js/pandoraEmbed.js"></script>
|
||||
<script type="text/javascript" src="/static/js/embed/pandora.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
};
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript" src="/static/oxjs/dev/Ox.js"></script>
|
||||
<script type="text/javascript" src="/static/js/pandora.js"></script>
|
||||
<script type="text/javascript" src="/static/oxjs/build/Ox.js"></script>
|
||||
<script type="text/javascript" src="/static/js/init.js"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
|
|
|
@ -29,7 +29,7 @@ Ox.load({
|
|||
hideScreen: false,
|
||||
loadImages: true,
|
||||
showScreen: true,
|
||||
theme: 'modern'
|
||||
theme: localStorage?localStorage.theme:'modern'
|
||||
},
|
||||
Geo: {}
|
||||
}, function(browserSupported) {
|
||||
|
@ -54,7 +54,7 @@ Ox.load({
|
|||
ui: {}
|
||||
});
|
||||
|
||||
loadResources('/static/json/pandora.json', function() {
|
||||
loadResources(function() {
|
||||
|
||||
Ox.print('Ox.App load', data);
|
||||
|
||||
|
@ -144,34 +144,33 @@ Ox.load({
|
|||
|
||||
});
|
||||
|
||||
}, '/static/'); // fixme: why does loadResources have an argument after callback????
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function loadResources(json, callback, prefix) {
|
||||
prefix = prefix || '';
|
||||
$.getJSON(json, function(files) {
|
||||
var promises = [];
|
||||
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();
|
||||
promises.push(dfd.promise());
|
||||
Ox.loadFile(prefix + file, function() {
|
||||
dfd.resolve();
|
||||
function loadResources(callback) {
|
||||
var prefix = '/static/';
|
||||
if(localStorage && localStorage.debug) {
|
||||
Ox.getJSON(prefix + 'json/pandora.json', function(files) {
|
||||
var promises = [];
|
||||
files.forEach(function(file) {
|
||||
var dfd = new $.Deferred();
|
||||
promises.push(dfd.promise());
|
||||
Ox.loadFile(prefix + file, function() {
|
||||
dfd.resolve();
|
||||
});
|
||||
});
|
||||
$.when.apply(null, promises)
|
||||
.done(function() {
|
||||
callback();
|
||||
})
|
||||
.fail(function() {
|
||||
throw new Error('File not found.');
|
||||
});
|
||||
});
|
||||
$.when.apply(null, promises)
|
||||
.done(function() {
|
||||
callback();
|
||||
})
|
||||
.fail(function() {
|
||||
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) {
|
||||
// fixme: layers have value, subtitles has text?
|
||||
var subtitles = result.data.layers.subtitles
|
||||
? result.data.layers.subtitles.map(function(subtitle) {
|
||||
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 && [
|
||||
|
@ -64,7 +77,7 @@ pandora.ui.item = function() {
|
|||
Ox.Element()
|
||||
.css({marginTop: '32px', fontSize: '12px', textAlign: 'center'})
|
||||
.html(
|
||||
'Sorry, <i>' + result.data.title
|
||||
'Sorry, <i>' + result.data.title
|
||||
+ '</i> currently doesn\'t have a '
|
||||
+ pandora.user.ui.itemView + ' view.'
|
||||
)
|
||||
|
@ -135,18 +148,7 @@ pandora.ui.item = function() {
|
|||
} else if (pandora.user.ui.itemView == 'video') {
|
||||
// fixme: duplicated
|
||||
var clipsQuery = pandora.getClipsQuery(),
|
||||
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;
|
||||
});
|
||||
});
|
||||
isClipsQuery = !!clipsQuery.conditions.length;
|
||||
//
|
||||
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.player = Ox.VideoPanelPlayer({
|
||||
annotationsSize: pandora.user.ui.annotationsSize,
|
||||
|
@ -200,18 +202,7 @@ pandora.ui.item = function() {
|
|||
|
||||
} else if (pandora.user.ui.itemView == 'timeline') {
|
||||
var clipsQuery = pandora.getClipsQuery(),
|
||||
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;
|
||||
});
|
||||
});
|
||||
isClipsQuery = !!clipsQuery.conditions.length;
|
||||
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.editor = Ox.VideoEditor({
|
||||
annotationsSize: pandora.user.ui.annotationsSize,
|
||||
censored: censored,
|
||||
|
@ -237,7 +228,6 @@ pandora.ui.item = function() {
|
|||
posterFrame: parseInt(video.duration / 2),
|
||||
showAnnotations: pandora.user.ui.showAnnotations,
|
||||
showLargeTimeline: true,
|
||||
// fixme: layers have value, subtitles has text?
|
||||
subtitles: subtitles,
|
||||
tooltips: true,
|
||||
video: video,
|
|
@ -1,60 +1,60 @@
|
|||
[
|
||||
"js/pandora/Query.js",
|
||||
"js/pandora/UI.js",
|
||||
"js/pandora/URL.js",
|
||||
"js/pandora/autovalidate.js",
|
||||
"js/pandora/utils.js",
|
||||
"js/pandora/ui/filesView.js",
|
||||
"js/pandora/ui/account.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"
|
||||
]
|
||||
"js/pandora/Query.js",
|
||||
"js/pandora/UI.js",
|
||||
"js/pandora/URL.js",
|
||||
"js/pandora/account.js",
|
||||
"js/pandora/appPanel.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/videoPreview.js",
|
||||
"js/pandora/viewSelect.js"
|
||||
]
|
Loading…
Reference in a new issue