You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by ru...@apache.org on 2017/12/08 02:10:03 UTC
[whimsy] branch master updated: message notes
This is an automated email from the ASF dual-hosted git repository.
rubys pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new bc96980 message notes
bc96980 is described below
commit bc969805038b606d1b34c8d0b616ac2691cd0e09
Author: Sam Ruby <ru...@intertwingly.net>
AuthorDate: Thu Dec 7 21:09:35 2017 -0500
message notes
---
www/board/agenda/views/sw.js.rb | 20 +++++++++++++
www/secretary/workbench/views/actions/note.json.rb | 13 +++++++++
www/secretary/workbench/views/app.js.rb | 5 ++--
www/secretary/workbench/views/forms/note.js.rb | 34 ++++++++++++++++++++++
www/secretary/workbench/views/parts.js.rb | 24 ++++++++++++++-
5 files changed, 93 insertions(+), 3 deletions(-)
diff --git a/www/board/agenda/views/sw.js.rb b/www/board/agenda/views/sw.js.rb
index e24e1b0..4a277d7 100644
--- a/www/board/agenda/views/sw.js.rb
+++ b/www/board/agenda/views/sw.js.rb
@@ -99,6 +99,18 @@ def fetch_from_cache(event)
end
end
+# fetch from network with timeout
+def fetch_from_network(event, timeout)
+ return Promise.new do |fulfill, reject|
+ timeout = setTimeout(reject, timeout)
+ fetch(event.request).then(lambda {|response|
+ clearTimeout(timeout)
+ cache_replace(cache, event.request, response.clone())
+ fulfill(response)
+ }, reject)
+ end
+end
+
# Return a bootstrap.html page within 0.5 seconds. If the network responds
# in time, go with that response, otherwise respond with a cached version.
def bootstrap(event, request)
@@ -183,6 +195,14 @@ self.addEventListener :fetch do |event|
# cache and respond to js and css requests
event.respondWith(fetch_from_cache(event))
+ elsif url == '/' or url == ''
+ console.log '=' + url.inspect
+ # respond from network, with 1 second timeout; else use cache
+ event.respondWith(fetch_from_network(event, 1_000).catch {
+ return fetch_from_cache(event)
+ })
+ else
+ console.log '?' + url.inspect
end
end
end
diff --git a/www/secretary/workbench/views/actions/note.json.rb b/www/secretary/workbench/views/actions/note.json.rb
new file mode 100644
index 0000000..a10132c
--- /dev/null
+++ b/www/secretary/workbench/views/actions/note.json.rb
@@ -0,0 +1,13 @@
+#
+# Add/replace a note
+#
+
+# extract message
+message = Mailbox.find(@message)
+
+# update notes
+message.headers[:secmail] ||= {}
+message.headers[:secmail][:notes] = @notes
+
+# update message
+message.write_headers
diff --git a/www/secretary/workbench/views/app.js.rb b/www/secretary/workbench/views/app.js.rb
index 1da7f7b..92b2944 100644
--- a/www/secretary/workbench/views/app.js.rb
+++ b/www/secretary/workbench/views/app.js.rb
@@ -12,6 +12,7 @@ require_relative 'forms/icla'
require_relative 'forms/icla2'
require_relative 'forms/grant'
require_relative 'forms/ccla'
-require_relative 'forms/nda'
-require_relative 'forms/memapp'
require_relative 'forms/forward'
+require_relative 'forms/memapp'
+require_relative 'forms/nda'
+require_relative 'forms/note'
diff --git a/www/secretary/workbench/views/forms/note.js.rb b/www/secretary/workbench/views/forms/note.js.rb
new file mode 100644
index 0000000..b1f3149
--- /dev/null
+++ b/www/secretary/workbench/views/forms/note.js.rb
@@ -0,0 +1,34 @@
+#
+# Add/edit message notes
+#
+
+class Note < Vue
+ def render
+ _div.partmail! do
+ _h3 'Note'
+ _textarea value: @notes, name: 'notes'
+
+ _input.btn.btn_primary value: 'Save', type: 'submit',
+ onClick: submit
+ end
+ end
+
+ def created()
+ @@headers.secmail ||= {}
+ @@headers.secmail.notes ||= ''
+ @notes = @@headers.secmail.notes
+ end
+
+ def submit()
+ data = {
+ message: window.parent.location.pathname,
+ notes: @notes
+ }
+
+ HTTP.post('../../actions/note', data).then {|result|
+ window.location.reload()
+ }.catch {|message|
+ alert message
+ }
+ end
+end
diff --git a/www/secretary/workbench/views/parts.js.rb b/www/secretary/workbench/views/parts.js.rb
index c27b7bf..e5c21eb 100644
--- a/www/secretary/workbench/views/parts.js.rb
+++ b/www/secretary/workbench/views/parts.js.rb
@@ -65,6 +65,13 @@ class Parts < Vue
_div.alert.alert_info @headers.secmail.status
end
+ if @headers and @headers.secmail and @headers.secmail.notes
+ _div.alert.alert_warning do
+ _h5 'Notes:'
+ _span @headers.secmail.notes
+ end
+ end
+
# context menu that displays when you 'right click' an attachment
_ul.contextMenu do
_li "\u2704 burst", onMousedown: self.burst
@@ -173,6 +180,18 @@ class Parts < Vue
onClick: -> {@form = Forward}
_span 'forward email'
end
+
+ _hr
+
+ _label do
+ _input type: 'radio', name: 'doctype', value: 'forward',
+ onClick: -> {@form = Note}
+ if @headers and @headers.secmail and @headers.secmail.notes
+ _span 'edit note'
+ else
+ _span 'add note'
+ end
+ end
end
elsif @form == :edit
@@ -239,7 +258,10 @@ class Parts < Vue
window.parent.onkeydown = self.keydown
frames = window.parent.frames
for i in 0...frames.length
- frames[i].onkeydown=self.keydown
+ begin
+ frames[i].onkeydown=self.keydown
+ rescue => error
+ end
end
self.hideMenu()
--
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <co...@whimsical.apache.org>'].