root/trunk/mt-static/js/assetdetail.js

Revision 5151, 5.1 kB (checked in by takayama, 2 months ago)

* Merged latest changes From G2. svn merge -r 5094:5145 http://code.sixapart.com/svn/movabletype/branches/g2/

  • Property svn:keywords set to Author Date Id Revision
Line 
1/*
2# Movable Type (r) Open Source (C) 2001-2010 Six Apart, Ltd.
3# This program is distributed under the terms of the
4# GNU General Public License, version 2.
5#
6# $Id$
7*/
8
9/* for showing, hiding, and displaying asset details */
10
11/* assign to an element when using a modal dialog, ie:
12    isModal = getByID("list-assets-dialog")
13*/
14var isModal;
15
16function toggleScrollBar(which) {
17    var el = getByID("selector");
18    if (which == 'left') {
19        TC.addClassName(el, "condensed");
20    } else {
21        TC.removeClassName(el, "condensed");
22    }
23}
24
25var opened = false;
26var asset_id = '';
27var detailRowClass = '';
28var orgiRowClass = '';
29function hasOpened(id) {
30    opened = true;
31    asset_id = id;
32    detailRowClass = getByID("asset-" + asset_id);
33    origRowClass = detailRowClass.className;
34}
35
36function notOpened(id) {
37    opened = false;
38    asset_id = '';
39    detailRowClass = '';
40    origRowClass = '';
41}
42
43function checkOpened() {
44    if (opened) {
45        hide('asset-' + asset_id + '-preview');
46        detailRowClass.className = origRowClass;
47        notOpened(asset_id);
48        toggleScrollBar('right');
49    }
50}
51
52function toggleAssetDetails(id) {
53    var radio_val = false;
54    var button_val = true;
55    if (asset_id == id) {
56        hide('asset-' + asset_id + '-preview');
57        detailRowClass.className = origRowClass;
58        notOpened(asset_id);
59        if (isModal) {
60            toggleScrollBar('right');
61        }
62    } else {
63        displayAssetDetails(id);
64        if (isModal) {
65            toggleScrollBar('left');
66        }
67        radio_val = true;
68        button_val = false;
69    }       
70    var radio = getByID("asset-radio-"+id);
71    if (radio) {
72        radio.checked = radio_val;
73    }
74   
75
76    if (window.dlg) {
77        var panel = window.dlg.panel;
78        var button = panel.closeButton;
79        if (button_val)
80            TC.addClassName(button, "disabled-button");
81        else
82            TC.removeClassName(button, "disabled-button");
83        button.disabled = button_val;
84    }
85}
86
87var assets = {};
88var guardian = 0;
89var timer;
90var thumb;
91
92function displayAssetDetails(id) {
93    /* display popup panel showing details of selected asset */
94    checkOpened();
95    hasOpened(id);
96    var asset = assets[id];
97    if (!asset) {
98        var detail_json = getByID("asset-" + id + "-json");
99        if (!detail_json) return false;
100        asset = eval('(' + detail_json.value + ')');
101        if (!asset) return false;
102        assets[id] = asset;
103    }
104
105    if (asset.thumbnail_url) {
106        guardian = 0;
107        thumb = new Image;
108        thumb.src = asset.thumbnail_url;
109
110        clearInterval(timer);
111        timer = setInterval("waitForLoad("+id+")", 500);
112    } else {
113        showPage(id);
114    }
115}
116
117function waitForLoad(id) {
118    guardian++;
119    if (thumb.complete || (guardian > 5)) {
120        clearInterval(timer);
121        showPage(id);
122    }
123}
124
125function showPage(id) {
126
127    /* display popup panel showing details of selected asset */
128    DOM.addClassName( detailRowClass, 'selected' );
129    var detail = getByID("asset-" + id + "-preview");
130    var detail_inner = getByID("asset-" + id + "-preview-inner");
131    var asset = assets[id];
132    if (!asset) {
133        var detail_json = getByID("asset-" + id + "-json");
134        if (!detail_json) return false;
135        asset = eval('(' + detail_json.value + ')');
136        if (!asset) return false;
137        assets[id] = asset;
138    }
139
140    var close = trans('Close');
141    var close_link = "<a href=\"javascript:void(0)\" onclick=\"toggleAssetDetails('" + id + "'); notOpened('" + id + "');\" class=\"close-preview-link\"><span>" + close + "</span>&nbsp;</a>";
142    var preview;
143    if (asset.preview_url) {
144        preview = "<img src=\"" + asset.preview_url + "\" class=\"preview\" />";
145    } else {
146        ext = asset.ext;
147        var icons = ("doc,eps,fla,gif,jpg,mp3,mpg,pdf,png,ppt,psd,txt,xls,zip");
148        var icon_array = icons.split(",");
149        for (var loop=0; loop < icon_array.length; loop++) {
150            if (ext == icon_array[loop]){
151                asset.ext = ext;
152                break;
153            } else {
154                asset.ext = "default";
155            }
156        }
157        var noPreview = trans('No Preview Available');
158        var clickToSee = trans('View uploaded file');
159        preview = ""
160        + "<div class=\"asset-icon asset-icon-" + asset.ext + "\">"
161        + "<strong>" + noPreview + "</strong>"
162        + "<a href=\"" + asset.url + "\" target=\"view_uploaded\">" + clickToSee + "</a>"
163        + "</div>";
164    }
165    var metadata;
166    if (asset['image_dimensions']) {
167        metadata = "<div class=\"asset-preview-meta\">" + asset['image_dimensions']
168            + ( asset['file_size'] ? " - " + asset['file_size'] : "") + "</div>";
169    } else if (asset['file_size']) {
170        metadata = asset['file_size'];
171    } else {
172        metadata = ""
173    };
174    var label;
175    if (asset['Name']) {
176        label = asset['Name'];
177    } else {
178        label = asset['name'];
179    };
180    detail_inner.innerHTML = close_link
181        + "<div class=\"asset-preview-image\">" + preview + "</div>"
182        + "<div class=\"asset-preview-title\">" + label + "</div>"
183        + metadata;
184    show("asset-" + id + "-preview");
185    return false;
186}
187
Note: See TracBrowser for help on using the browser.