Set mentioned flag on mention
[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", tag: null, allowHtml: true},
13         {classes: "info", components: [
14             {tag: null, content: "Posted "},
15             {name: "date", tag: null},
16             {tag: null, content: ". "},
17             {name: "permalink", kind: "blerg.Link", content: "[permalink]"},
18             {tag: null, content: " "},
19             {name: "reply", kind: "blerg.Link", content: "[reply]", onNavigate: "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             replyto: this.$.data.getContent()
48         });
49         return true;
50     }
51 });
52
53 enyo.kind({
54     name: "blerg.TagRecord",
55     kind: "blerg.Record",
56     components: [
57         {name: "data", tag: null, allowHtml: true},
58         {classes: "info", components: [
59             {tag: null, content: "Posted by "},
60             {name: "author", kind: "blerg.Link", classes: "author ref"},
61             {tag: null, content: " at "},
62             {name: "date", tag: null},
63             {tag: null, content: ". "},
64             {name: "permalink", kind: "blerg.Link", content: "[permalink]"},
65             {tag: null, content: " "},
66             {name: "reply", kind: "blerg.Link", content: "[reply]", onNavigate: "postPopup"}
67         ]}
68     ],
69     updateLinks: function() {
70         this.inherited(arguments);
71         this.$.author.setContent('@' + this.author);
72         this.$.author.setHref('/#' + this.author);
73     }
74 });
75
76 enyo.kind({
77     name: "blerg.BriefRecord",
78     kind: "blerg.Record",
79     components: [
80         {name: "authorlink", kind: "blerg.Link", classes: "author ref"},
81         {tag: null, content: " "},
82         {name: "data", tag: null}
83     ],
84     dataChanged: function() {
85         var d = this.data.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
86         this.$.data.setContent(d);
87     },
88     timestampChanged: function() { },
89     updateLinks: function() {
90         this.$.authorlink.setHref(baseURL + '/#' + this.author);
91         this.$.authorlink.setContent('@' + this.author);
92     },
93 });