]> git.saurik.com Git - cydia.git/blob - Cydia.app/package.js
Fixed a localization bug in section hiding.
[cydia.git] / Cydia.app / package.js
1 /*var package = {
2 "name": "MobileTerminal",
3 "latest": "286u-5",
4 "author": {
5 "name": "Allen Porter",
6 "address": "allen.porter@gmail.com"
7 },
8 //"depiction": "http://planet-iphones.com/repository/info/chromium1.3.php",
9 "depiction": "http://cydia.saurik.com/terminal.html",
10 "longDescription": "this is a sample description",
11 "homepage": "http://cydia.saurik.com/terminal.html",
12 "installed": "286u-4",
13 "id": "mobileterminal",
14 "section": "Terminal Support",
15 "size": 552*1024,
16 "maintainer": {
17 "name": "Jay Freeman",
18 "address": "saurik@saurik.com"
19 },
20 "source": {
21 "name": "Telesphoreo Tangelo",
22 "description": "Distribution of Unix Software for the iPhone"
23 }
24 };*/
25
26 function space(selector, html, max) {
27 var node = $(selector);
28 node.html(html);
29 var width = node.width();
30 if (width > max) {
31 var spacing = (max - node.width()) / (html.length - 1) + "px";
32 node.css("letter-spacing", spacing);
33 }
34 }
35
36 function cache(url) {
37 return url.replace('://', '://ne.edgecastcdn.net/8003A4/');
38 }
39
40 var swap_, swap = function (on, off, time) {
41 setTimeout(swap_(on, off, time), time);
42 };
43
44 swap_ = function (on, off, time) {
45 return function () {
46 on.className = 'fade-out';
47 off.className = 'fade-in';
48 swap(off, on, time);
49 };
50 };
51
52 var special_ = function () {
53 if (package == null)
54 return;
55
56 var id = package.id;
57 var idc = encodeURIComponent(id);
58 var name = package.name;
59 var icon = 'cydia://package-icon/' + idc;
60 var api = 'http://cydia.saurik.com/api/';
61
62 var support = package.support;
63
64 var regarding = function (type) {
65 return encodeURIComponent("Cydia/APT(" + type + "): " + name);
66 };
67
68 $("#icon").css("background-image", 'url("' + icon + '")');
69 //$("#reflection").src("cydia://package-icon/" + idc);
70
71 $("#name").html(name);
72 space("#latest", package.latest, 96);
73
74 $.xhr(cache(api + 'package/' + idc), 'GET', {}, null, {
75 success: function (value) {
76 value = eval(value);
77
78 if (typeof value.notice == "undefined")
79 $(".notice").addClass("deleted");
80 else
81 $("#notice-src")[0].outerHTML = '<iframe' +
82 ' class="notice"' +
83 ' id="notice-src"' +
84 ' frameborder="0"' +
85 ' width="320"' +
86 ' height="0"' +
87 ' target="_top"' +
88 ' src="' + $.xml(value.notice) + '"' +
89 ' onload="onframe(' + "'notice-src', 'notice'" + ')"' +
90 '></iframe>';
91
92 if (typeof value.rating == "undefined")
93 $(".rating").addClass("deleted");
94 else {
95 $("#rating-load").addClass("deleted");
96 $("#rating-href").href(value.reviews);
97
98 var none = $("#rating-none");
99 var done = $("#rating-done");
100
101 if (value.rating == null) {
102 none.css("display", "block");
103 } else {
104 done.css("display", "block");
105
106 $("#rating-value").css('width', 16 * value.rating);
107 }
108 }
109
110 if (typeof value.icon != "undefined" && value.icon != null) {
111 var icon = $("#icon");
112 var thumb = $("#thumb");
113
114 icon[0].className = 'flip-180';
115 thumb[0].className = 'flip-360';
116
117 thumb.css("background-image", 'url("' + value.icon + '")');
118
119 setTimeout(function () {
120 icon.addClass("deleted");
121 thumb[0].className = 'flip-0';
122 }, 2000);
123 }
124 },
125
126 failure: function (status) {
127 $(".rating").addClass("deleted");
128 }
129 });
130
131 $("#settings").href("cydia://package-settings/" + idc);
132
133 var mode = package.mode;
134 if (mode == null)
135 $(".mode").addClass("deleted");
136 else {
137 $("#mode").html(cydia.localize(mode));
138 $("#mode-src").src("Modes/" + mode + ".png");
139 }
140
141 var warnings = package.warnings;
142 var length = warnings == null ? 0 : warnings.length;
143 if (length == 0)
144 $(".warnings").addClass("deleted");
145 else {
146 var parent = $("#warnings");
147 var child = $("#warning");
148
149 for (var i = 0; i != length; ++i) {
150 var clone = child.clone(true);
151 clone.addClass("inserted");
152 parent.append(clone);
153 clone.xpath("./div/label").html($.xml(warnings[i]));
154 }
155
156 child.addClass("deleted");
157 }
158
159 var applications = package.applications;
160 var length = applications == null ? 0 : applications.length;
161
162 var child = $("#application");
163
164 /*if (length != 0) {
165 var parent = $("#actions");
166
167 for (var i = 0; i != length; ++i) {
168 var application = applications[i];
169 var clone = child.clone(true);
170 parent.append(clone);
171 clone.href("cydia://launch/" + application[0]);
172 clone.xpath("label").html("Run " + $.xml(application[1]));
173 clone.xpath("img").src(application[2]);
174 }
175 }*/
176
177 child.addClass("deleted");
178
179 var commercial = package.hasTag('cydia::commercial');
180 if (!commercial)
181 $(".commercial").addClass("deleted");
182
183 var _console = package.hasTag('purpose::console');
184 if (!_console)
185 $(".console").addClass("deleted");
186
187 var author = package.author;
188 if (author == null)
189 $(".author").addClass("deleted");
190 else {
191 space("#author", author.name, 160);
192 if (author.address == null)
193 $("#author-icon").addClass("deleted");
194 else if (support == null)
195 $("#author-href").href("mailto:" + author.address + "?subject=" + regarding("A"));
196 else
197 $("#author-href").href(support);
198 }
199
200 /*var store = commercial;
201 if (!store)
202 $(".activation").addClass("deleted");
203 else {
204 var activation = api + 'activation/' + idc;
205 $("#activation-src").src(activation);
206 }*/
207
208 var depiction = package.depiction;
209 if (depiction == null)
210 $(".depiction").addClass("deleted");
211 else {
212 $(".description").addClass("deleted");
213
214 $("#depiction-src")[0].outerHTML = '<iframe' +
215 ' class="depiction"' +
216 ' id="depiction-src"' +
217 ' frameborder="0"' +
218 ' width="320"' +
219 ' height="0"' +
220 ' target="_top"' +
221 ' src="' + $.xml(depiction) + '"' +
222 ' onload="onframe(' + "'depiction-src', 'depiction'" + ')"' +
223 '></iframe>';
224 }
225
226 var description = package.longDescription;
227 if (description == null)
228 description = package.shortDescription;
229 else
230 description = description.replace(/\n/g, "<br/>");
231 $("#description").html(description);
232
233 var homepage = package.homepage;
234 if (homepage == null)
235 $(".homepage").addClass("deleted");
236 else
237 $("#homepage-href").href(homepage);
238
239 var installed = package.installed;
240 if (installed == null)
241 $(".installed").addClass("deleted");
242 else {
243 $("#installed").html(installed);
244 $("#files-href").href("cydia://files/" + idc);
245 }
246
247 space("#id", id, 220);
248
249 var section = package.longSection;
250 if (section == null)
251 $(".section").addClass("deleted");
252 else {
253 $("#section-src").src("cydia://section-icon/" + encodeURIComponent(section));
254 $("#section").html(section);
255 }
256
257 var size = package.size;
258 if (size == 0)
259 $(".size").addClass("deleted");
260 else
261 $("#size").html(size / 1024 + " kB");
262
263 var maintainer = package.maintainer;
264 if (maintainer == null)
265 $(".maintainer").addClass("deleted");
266 else {
267 space("#maintainer", maintainer.name, 153);
268 if (maintainer.address == null)
269 $("#maintainer-icon").addClass("deleted");
270 else if (support == null)
271 $("#maintainer-href").href("mailto:" + maintainer.address + "?subject=" + regarding("M"));
272 else
273 $("#maintainer-href").href(support);
274 }
275
276 var sponsor = package.sponsor;
277 if (sponsor == null)
278 $(".sponsor").addClass("deleted");
279 else {
280 space("#sponsor", sponsor.name, 152);
281 $("#sponsor-href").href(sponsor.address);
282 }
283
284 var source = package.source;
285 if (source == null) {
286 $(".source").addClass("deleted");
287 $(".trusted").addClass("deleted");
288 } else {
289 var host = source.host;
290
291 $("#source-src").src("cydia://source-icon/" + encodeURIComponent(host));
292 $("#source-name").html(source.name);
293
294 if (source.trusted)
295 $("#trusted").href("cydia://package-signature/" + idc);
296 else
297 $(".trusted").addClass("deleted");
298
299 var description = source.description;
300 if (description == null)
301 $(".source-description").addClass("deleted");
302 else
303 $("#source-description").html(description);
304 }
305 };
306
307 $(special_);
308
309 var special = function () {
310 $(".deleted").removeClass("deleted");
311 $(".inserted").remove();
312
313 $("#icon")[0].className = 'flip-0';
314 $("#thumb")[0].className = 'flip-180';
315
316 /* XXX: this could be better */
317 $("#rating-href").href(null);
318 $("#rating-none").css("display", "none");
319 $("#rating-done").css("display", "none");
320
321 var notice = $("#notice-src");
322
323 notice[0].outerHTML = '<iframe' +
324 ' class="notice"' +
325 ' id="notice-src"' +
326 ' frameborder="0"' +
327 ' width="320"' +
328 ' height="0"' +
329 ' target="_top"' +
330 ' onload="onframe(' + "'notice-src', 'notice'" + ')"' +
331 '></iframe>';
332
333 var depiction = $("#depiction-src");
334
335 depiction[0].outerHTML = '<iframe' +
336 ' class="depiction"' +
337 ' id="depiction-src"' +
338 ' frameborder="0"' +
339 ' width="320"' +
340 ' height="0"' +
341 ' target="_top"' +
342 ' onload="onframe(' + "'depiction-src', 'depiction'" + ')"' +
343 '></iframe>';
344
345 special_();
346 };
347
348 cydia.setSpecial(special);