diff --git a/Makefile b/Makefile index 7a19ce9..f38fd2d 100644 --- a/Makefile +++ b/Makefile @@ -113,7 +113,7 @@ pkgar: test -f $(BUILDDIR)/packages/$$PKG/main.js && uglifyjs $(BUILDDIR)/packages/$$PKG/main.js --compress --mangle --output $(BUILDDIR)/packages/$$PKG/main.js;\ test -f $(BUILDDIR)/packages/$$PKG/main.css && uglifycss --output $(BUILDDIR)/packages/$$PKG/main.css $(BUILDDIR)/packages/$$PKG/main.css;\ cd $(BUILDDIR)/packages/$$PKG && zip -r "$$PKG.zip" ./ ; \ - cd ../../ && (mkdir repo/$$PKG || true) && mv packages/$$PKG/"$$PKG.zip" repo/$$PKG && touch repo/$$PKG/$$PKG.md && rm -r packages/$$PKG + cd ../../ && (test -d repo/$$PKG || mkdir repo/$$PKG) && mv packages/$$PKG/"$$PKG.zip" repo/$$PKG && touch repo/$$PKG/$$PKG.md && rm -r packages/$$PKG uglify: # uglify antos.js diff --git a/src/packages/Blogger/Makefile b/src/packages/Blogger/Makefile index e55b307..a359d9f 100644 --- a/src/packages/Blogger/Makefile +++ b/src/packages/Blogger/Makefile @@ -4,7 +4,7 @@ jsfiles = katex/katex.js katex/auto-render.js cssfiles = main.css katex/katex.css -copyfiles = scheme.html cvsection.html package.json katex/fonts +copyfiles = scheme.html cvsection.html package.json katex/fonts api/sendmail.lua sendmail.html PKG_NAME=Blogger diff --git a/src/packages/Blogger/api/sendmail.lua b/src/packages/Blogger/api/sendmail.lua new file mode 100644 index 0000000..cf651b3 --- /dev/null +++ b/src/packages/Blogger/api/sendmail.lua @@ -0,0 +1,17 @@ + +local data = ... +print(data.content) +for k,v in pairs(data.to) do + print("sent to:"..v) + local to = v + local from = "From: xsang.le@gmail.com\n" + local suject = "Subject: " .. data.title .. "\n" + local content = data.content.."\n" + local cmd = 'echo "' .. utils.escape(from .. suject .. content) .. '"| sendmail ' .. to + --print(cmd) + local r = os.execute(cmd) + if not r then + print("Cannot send mail to: "..v) + end +end +return "Email sent" \ No newline at end of file diff --git a/src/packages/Blogger/dialogs.coffee b/src/packages/Blogger/dialogs.coffee index 0771540..2e70418 100644 --- a/src/packages/Blogger/dialogs.coffee +++ b/src/packages/Blogger/dialogs.coffee @@ -105,4 +105,72 @@ class BloggerCVSectionDiaglog extends this.OS.GUI.BaseDialog container = @find "editor-container" children = ($ container).children() cheight = ($ container).height() - 30 - ($ children[1]).css("height", cheight + "px") \ No newline at end of file + ($ children[1]).css("height", cheight + "px") + +# this dialog is for send mail +class BloggerSendmailDiaglog extends this.OS.GUI.BaseDialog + constructor: () -> + super "BloggerCVSectionDiaglog" + + init: () -> + @render "#{@path()}/sendmail.html" + @subdb = new @.parent._api.DB("subscribers") + + main: () -> + # get db + me = @ + @maillinglist = @find "email-list" + title = (new RegExp "^#+(.*)\n", "g").exec @data.content + (@find "mail-title").value = title[1] + content = (@data.content.substring 0, 500) + "..." + (@find "contentarea").value = BloggerSendmailDiaglog.template.format @data.id, content, @data.id + + @subdb.find {}, (d) -> + return me.error __("Cannot fetch subscribers data: {0}", d.error) if d.error + for v in d.result + v.text = v.name + v.switch = true + v.checked = true + + me.maillinglist.set "items", d.result + + (@find "bt-sendmail").set "onbtclick", (e) -> + items = me.maillinglist.get "items" + emails = [] + emails.push v.email for v in items when v.checked is true + return me.notify __("No email selected") if emails.length is 0 + # send the email + data = + path: "#{me.parent.path()}/sendmail.lua", + parameters: + to: emails, + title: (me.find "mail-title").value, + content: (me.find "contentarea").value + me._api.post "system/apigateway", data, (d) -> + me.notify "Sendmail: {0}".format d + me.quit() + , (e, s) -> + console.log e + me.error __("Error sending mail: {0}", e.responseText) + + + +BloggerSendmailDiaglog.template = """ +Hello, + +Xuan Sang LE has just published a new post on his blog: https://blog.lxsang.me/post/id/{0} + +========== +{1} +========== + + +Read the full article via: +https://blog.lxsang.me/post/id/{2} + +You receive this email because you have been subscribed to his blog. + +Have a nice day, + +Sent from Blogger, an AntOS application +""" \ No newline at end of file diff --git a/src/packages/Blogger/main.coffee b/src/packages/Blogger/main.coffee index 55c0896..98e24b1 100644 --- a/src/packages/Blogger/main.coffee +++ b/src/packages/Blogger/main.coffee @@ -183,6 +183,17 @@ class Blogger extends this.OS.GUI.BaseApplication SimpleMDE.togglePreview e #/console.log me.select ".editor-preview editor-preview-active" renderMathInElement me.find "editor-container" + }, + "|", + { + name: __("Send mail"), + className: "fa fa-paper-plane", + action: (e) -> + sel = me.bloglist.get "selected" + return me.error __("No post selected") unless sel + me.openDialog new BloggerSendmailDiaglog(), (d) -> + console.log "test" + , __("Send mail"), { content: me.editor.value(), id: sel.id } } ] @bloglist.set "onlistselect", (e) -> diff --git a/src/packages/Blogger/package.json b/src/packages/Blogger/package.json index 9424b77..f696b2a 100644 --- a/src/packages/Blogger/package.json +++ b/src/packages/Blogger/package.json @@ -6,7 +6,7 @@ "author": "Xuan Sang LE", "email": "xsang.le@gmail.com" }, - "version":"0.0.3-a", + "version":"0.0.6-a", "category":"Internet", "iconclass":"fa fa-book", "mimes":["none"] diff --git a/src/packages/Blogger/sendmail.html b/src/packages/Blogger/sendmail.html new file mode 100644 index 0000000..7fb9874 --- /dev/null +++ b/src/packages/Blogger/sendmail.html @@ -0,0 +1,20 @@ + + + + +
+ +
+ + + +