7601de9972bbcf13b71a34b7923f846396722ca9
[blerg.git] / www / jssrc / blerg / Record.js
1 enyo.kind({
2         name: "blerg.Record",
3         kind: "Control",
4         classes: "record",
5         published: {
6                 data: "",
7                 timestamp: 0,
8                 author: "",
9                 record: null
10         },
11         components: [
12                 {name: "data", noDom: true, allowHtml: true},
13                 {classes: "info", components: [
14                         {noDom: true, content: "Posted "},
15                         {name: "date", noDom: true},
16                         {noDom: true, content: ". "},
17                         {name: "permalink", kind: "blerg.Link", content: "[permalink]"},
18                         {noDom: true, content: " "},
19                         {name: "reply", kind: "blerg.Link", content: "[reply]", onclick: "postPopup"}
20                 ]}
21         ],
22         create: function() {
23                 this.inherited(arguments);
24                 this.dataChanged();
25                 this.timestampChanged();
26                 this.updateLinks();
27         },
28         dataChanged: function() {
29                 this.$.data.setContent(blerg.Util.blergFormat(this.data));
30         },
31         timestampChanged: function() {
32                 this.$.date.setContent(new Date(this.timestamp * 1000).toString());
33         },
34         authorChanged: function() {
35                 this.updateLinks();
36         },
37         recordChanged: function() {
38                 this.updateLinks();
39         },
40         updateLinks: function() {
41                 this.$.permalink.setHref(baseURL + enyo.macroize("/#{$author}/{$record}", this));
42         },
43         postPopup: function() {
44                 this.bubble('onPostVisibility', {
45                         showing: true,
46                         data: enyo.macroize("@{$author}/{$record}", this)
47                 });
48                 return true;
49         }
50 });
51
52 enyo.kind({
53         name: "blerg.TagRecord",
54         kind: "blerg.Record"
55 });
56
57 enyo.kind({
58         name: "blerg.BriefRecord",
59         kind: "blerg.Record",
60         components: [
61                 {name: "authorlink", kind: "blerg.Link", classes: "author ref"},
62                 {noDom: true, content: " "},
63                 {name: "data", noDom: true}
64         ],
65         dataChanged: function() {
66                 var d = this.data.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
67                 this.$.data.setContent(d);
68         },
69         timestampChanged: function() { },
70         updateLinks: function() {
71                 this.$.authorlink.setHref(baseURL + '/#' + this.author);
72                 this.$.authorlink.setContent('@' + this.author);
73         },
74 });