diff options
Diffstat (limited to 'etherpad/src/plugins/twitterStyleTags/hooks.js')
-rw-r--r-- | etherpad/src/plugins/twitterStyleTags/hooks.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/etherpad/src/plugins/twitterStyleTags/hooks.js b/etherpad/src/plugins/twitterStyleTags/hooks.js new file mode 100644 index 0000000..1072579 --- /dev/null +++ b/etherpad/src/plugins/twitterStyleTags/hooks.js @@ -0,0 +1,56 @@ +import("etherpad.log"); +import("dispatch.{Dispatcher,PrefixMatcher,forward}"); +import("plugins.twitterStyleTags.controllers.tagBrowser"); +import("sqlbase.sqlobj"); + +function handlePath() { + return [[PrefixMatcher('/ep/tag/'), forward(tagBrowser)]]; +} + +function padModelWriteToDB(args) { + /* Update tags for the pad */ + + var new_tags = args.pad.text().match(new RegExp("#[^,#=!\\s][^,#=!\\s]*", "g")); + if (new_tags == null) new_tags = new Array(); + for (i = 0; i < new_tags.length; i++) + new_tags[i] = new_tags[i].substring(1); + var new_tags_str = new_tags.join('#') + + var old_tags_row = sqlobj.selectSingle("PAD_TAG_CACHE", { PAD_ID: args.padId }); + var old_tags_str; + if (old_tags_row !== null) + old_tags_str = old_tags_row['TAGS']; + else + old_tags_str = ''; + + // var old_tags = old_tags_str != '' ? old_tags_str.split('#') : new Array(); + + if (new_tags_str != old_tags_str) { + // log.info({message: 'Updating tags', new_tags:new_tags, old_tags:old_tags}); + + if (old_tags_row) + sqlobj.update("PAD_TAG_CACHE", {PAD_ID: args.padId }, {TAGS: new_tags.join('#')}); + else + sqlobj.insert("PAD_TAG_CACHE", {PAD_ID: args.padId, TAGS: new_tags.join('#')}); + + sqlobj.deleteRows("PAD_TAG", {PAD_ID: args.padId}); + + for (i = 0; i < new_tags.length; i++) { + var tag_row = sqlobj.selectSingle("TAG", { NAME: new_tags[i] }); + if (tag_row === null) { + sqlobj.insert("TAG", {NAME: new_tags[i]}); + tag_row = sqlobj.selectSingle("TAG", { NAME: new_tags[i] }); + } + sqlobj.insert("PAD_TAG", {PAD_ID: args.padId, TAG_ID: tag_row['ID']}); + } + } +} + +function docbarItemsAll() { + return ["<td class='docbarbutton'><a href='/ep/tag/'>Home</a></td>"]; +} + +function docbarItemsTagBrowser() { + return ["<td class='docbarbutton'><a href='/ep/tag/'>Pads</a></td>"]; +} + |