Plugin: Twitter-like status updates for projects

Added by Brian Terlson over 11 years ago

I think pretty much every small or agile team spends a lot of time asking teammates what they're doing, what they're thinking about doing, and etc. I know my team is among those. Twitter is great because it's an easy way to share small bits of information, but it's too public for a lot of uses. So, I've created a Redmine plugin that allows users to send little status updates about what they're up to.

You can find the plugin over at github: http://github.com/bterlson/redmine-status-updates/tree/master

I've attached a screenshot so you can get an idea of what I'm yammering about.

Now this plugin is, as far as I know, in a useable state. There are, however, lots of things I would like to get done in the future. A short list:

  • More documentation, polish, and code robustness.
  • Reference commits, tickets, and wiki pages.
  • An API to facilitate external clients updating project status (eg. a command line tool - redmine-status project_name "About to get started on refactoring my work from last night")
  • Status updates from email, etc.
  • Pagination of status updates (currently just shows most recent 100).

But anyway, have fun! Feel free to fork or offer suggestions :)

Replies (47)

RE: Plugin: Twitter-like status updates for projects - Added by Brian Terlson over 10 years ago

Hey guys.

It looks like there's an incompatibility between Engines and Rails 2.2.2. Namely, email templates behave very strangely. In all cases, it expects action.erb and ignores the specific types. The consequence as far as I can tell is that we will be unable to serve multipart emails. I tried specifying the templates manually, it did not work. So, I've pushed a change that manually specifies the templates and it seems to work well.

If you want a quick fix, you could potentially rename the plaintext email templates to what it expects (realtime_notification.erb) and things should work, although you'll only be getting plaintext emails.

Anyway, let me know if this fixes the problem!

p.s. Are any other plugins that are sending multi-part emails working on trunk?

RE: Plugin: Twitter-like status updates for projects - Added by Michael Lednev over 10 years ago

Yes. It works after rename. I prefer HTML notifications so I've renamed realtime_notification.text.html.rhtml

RE: Plugin: Twitter-like status updates for projects - Added by Brian Terlson over 10 years ago

Glad to hear it worked for you! I should correct my post above. I was able to manually specify templates in order to achieve a multipart email. The only thing that doesn't work is automatically sending multipart emails based on the template names. If you want to be able to send multipart notifications, you can update to the latest version of the plugin.

RE: Plugin: Twitter-like status updates for projects - Added by Pete Olsen about 10 years ago

I am having an issue with this plugin. I am new to ruby, rails, and redmine so please forgive any basic questions. I was able to install it just fine but I get 500 errors. I have tried to turn on debugging output in redmine but I must be doing it wrong. Can I get any help on fixing this?

Thanks, Pete.

RE: Plugin: Twitter-like status updates for projects - Added by WenSong Zhou about 10 years ago

Hello.

Hashtag tagging

If an update includes a word prefixed with a hash, then it will be tagged. Tagging updates is a quick and easy way to categories messages. The list of updates will then be able to be filtered by tags and the updates will appear in the Tag cloud.

I can't understand it , please give me an example .

Thanks

RE: Plugin: Twitter-like status updates for projects - Added by Eric Davis about 10 years ago

WenSong Zhou wrote:

I can't understand it , please give me an example .

It's based on the Twitter model of loosely categorizing data: http://twitter.pbworks.com/Hashtags An example of the #redmine hashtag on Twitter.

Eric Davis

RE: Plugin: Twitter-like status updates for projects - Added by WenSong Zhou about 10 years ago

Eric Davis wrote:

It's based on the Twitter model of loosely categorizing data: http://twitter.pbworks.com/Hashtags An example of the #redmine hashtag on Twitter.

Eric Davis

Thank you very much !

Apache gives me "File does not exist" errors in error.log :

[Fri Sep 04 12:57:26 2009] [error] [client 127.0.0.1] File does not exist: /var/www/plugin_assets, referer: http://localhost/redmine-0.9/
[Fri Sep 04 13:01:23 2009] [error] [client 127.0.0.1] File does not exist: /var/www/plugin_assets, referer: http://localhost/redmine-0.9/statuses
[Fri Sep 04 13:03:53 2009] [error] [client 127.0.0.1] File does not exist: , referer: http://localhost/redmine-0.9/statuses/index/polaris?caption=redmine_status_title

My redmine directories: /var/cgi-bin/redmine-trunk-r2847
Link public directories to web directories:
sudo ln -s /var/cgi-bin/redmine-r2847/public /var/www/redmine-0.9

If i removed redmine_status plugin and restart apache ,That's no errors.

Install problem - novice - Added by Paul paul about 10 years ago

Hi,
I installed the plugin in the past, but it didn't work properly.
I then removed the folder from inside /vendor/plugins and also removed statuses and status_notification tables from inside redmine's postgres db.
The problem is, when I run rake now, it migrates the plugin, but does not recreate the tables inside the DB. How can I force it to do that?
Thanks!
Paul

RE: Install problem - novice - Added by Paul paul about 10 years ago

Fixed. Needed to delete 2 rows from another table in postgres and rename the plugin folder to 'redmine_status'.

RE: Plugin: Twitter-like status updates for projects - Added by Paul paul almost 10 years ago

The plugin no longer works in my install, throwing the following error when visiting the Home Page. The rest of Redmine works fine. Removing the plugin solves the problem.
The only recent changes are:
  • a routine weekly update of the FreeBSD system on which RM is installed
  • hostname switched to be not fully qualified (i.e., myServer instead of myServer.com)


Processing WelcomeController#index (for 192.2.2.2 at 2009-12-28 00:03:46) [GET]
  Session ID: d859fc22531c4b764fb450831d2a5651
  Parameters: {"action"=>"index", "controller"=>"welcome"}
Rendering template within layouts/base
Rendering welcome/index

ActionView::TemplateError (Missing host to link to! Please provide :host parameter or set default_url_options[:host]) on line #12 of welcome/index.rhtml:
9:              <%= link_to l(:label_news_view_all), :controller => 'news' %>
10:   </div>
11:   <% end %>
12:   <%= call_hook(:view_welcome_index_left, :projects => @projects) %>
13: </div>
14: 
15: <div class="splitcontentright">

    vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:61:in `url_for'
    vendor/plugins/redmine_local_avatars/lib/application_helper_avatar_patch.rb:16:in `avatar'
    vendor/plugins/redmine_status/lib/status_welcome_hooks.rb:13:in `view_welcome_index_left'
    (__DELEGATION__):2:in `each'
    (__DELEGATION__):2:in `__send__'
    (__DELEGATION__):2:in `each'
    vendor/plugins/redmine_status/lib/status_welcome_hooks.rb:9:in `view_welcome_index_left'
    lib/redmine/hook.rb:63:in `send'
    lib/redmine/hook.rb:63:in `call_hook'
    lib/redmine/hook.rb:63:in `each'
    lib/redmine/hook.rb:63:in `call_hook'
    vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb:28:in `returning'
    lib/redmine/hook.rb:60:in `call_hook'
    lib/redmine/hook.rb:144:in `call_hook'
    app/views/welcome/index.rhtml:12:in `_run_erb_47app47views47welcome47index46rhtml'
    vendor/rails/actionpack/lib/action_view/base.rb:342:in `send'
    vendor/rails/actionpack/lib/action_view/base.rb:342:in `execute'
    vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb:29:in `send'
    vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb:29:in `render'
    vendor/rails/actionpack/lib/action_view/template.rb:35:in `render'
    vendor/rails/actionpack/lib/action_view/template.rb:22:in `render_template'
    vendor/rails/actionpack/lib/action_view/base.rb:248:in `render_file'
    vendor/rails/actionpack/lib/action_controller/base.rb:1112:in `render_for_file'
    vendor/rails/actionpack/lib/action_controller/base.rb:845:in `render_with_no_layout'
    vendor/rails/actionpack/lib/action_controller/layout.rb:251:in `render_without_benchmark'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
    vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:8:in `realtime'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
    vendor/rails/actionpack/lib/action_controller/base.rb:1161:in `default_render'
    vendor/rails/actionpack/lib/action_controller/base.rb:1167:in `perform_action_without_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:579:in `call_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
    vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    vendor/rails/actionpack/lib/action_controller/rescue.rb:201:in `perform_action_without_caching'
    vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:13:in `passenger_orig_perform_action'
    vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'
    vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in `cache'
    vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb:12:in `passenger_orig_perform_action'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/request_handler.rb:65:in `perform_action'
    vendor/rails/actionpack/lib/action_controller/base.rb:529:in `send'
    vendor/rails/actionpack/lib/action_controller/base.rb:529:in `process_without_filters'
    vendor/rails/actionpack/lib/action_controller/filters.rb:568:in `process_without_session_management_support'
    vendor/rails/actionpack/lib/action_controller/session_management.rb:130:in `process'
    vendor/rails/actionpack/lib/action_controller/base.rb:389:in `process'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:149:in `handle_request'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:107:in `dispatch'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `synchronize'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:104:in `dispatch'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi'
    vendor/rails/actionpack/lib/action_controller/dispatcher.rb:35:in `dispatch'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/request_handler.rb:50:in `process_request'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:378:in `start_request_handler'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:336:in `handle_spawn_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb:183:in `safe_fork'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:163:in `start'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:213:in `start'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'


RE: Plugin: Twitter-like status updates for projects - Added by Yuya Nishihara almost 10 years ago

Hi, this plugin looks nice. :)

I translated the messages to Japanese. Also fixed some minor issues:
  • Fixed i18n issues, added more translatable words
  • "Status" tab is highlighted when selected

Check my branch on GitHub: http://github.com/yuja/redmine_status

RE: Plugin: Twitter-like status updates for projects - Added by Chris McKee over 9 years ago

Using the latest from github caused redmine to die on its arse (0.9.2)

RE: Plugin: Twitter-like status updates for projects - Added by Paul paul over 9 years ago

Both Yuya's and the original version fail on 0.9.6 with Postgres 8.4.4
To test:
  1. Clone, migrate and activate the plugin
  2. Add a new status update
  3. Click Home
    --> Error 500.

Production.log:

ActionView::TemplateError (Missing host to link to! Please provide :host parameter or set default_url_options[:host]) on line #12 of app/views/welcome/index.rhtml: 9: <%= link_to l(:label_news_view_all), :controller => 'news' %> 10: </div> 11: <% end %> 12: <%= call_hook(:view_welcome_index_left, :projects => @projects) %> 13: </div> 14: 15: <div class="splitcontentright">

Any ideas?

RE: Plugin: Twitter-like status updates for projects - Added by Daniel Dimitrov over 8 years ago

Damn, shame on me that I don't know ruby!!!

@Brian Terlson - so you wrote that you got issue/wiki/revision linking working? Could you tell us if this is added at the github version and how to use it?
#hash links to a tag name and not to an issue.

I've installed the plugin on 1.1.2.stable and it seems to work fine (I haven't turned notifications on)

Ah and I want to say that this is an awesome plugin and someone should fork it and improve it :)!

RE: Plugin: Twitter-like status updates for projects - Added by Terence Mill over 8 years ago

"...die on its arse".. with notificaitons on .. haha, clowning, what!

Add Korean language file - Added by Ki Won Kim over 8 years ago

Thanks for plugin development.
And to add Korean language file.

ko.yml Magnifier - Korean language file (978 Bytes)

RE: Plugin: Twitter-like status updates for projects - Added by Pavel Pivovarov over 8 years ago

And this is my russian translation.
But I made some changes in plugin code, to make menu title, "Message" field, and "Project" field work with translation properly
chande menu line in ./init.rb

 menu :top_menu, :redmine_status_title, {:controller => 'statuses', :action => 'index', :id => nil}, :caption => :redmine_status_title

and make ./app/viewers/statuses/_add_status.html.erb looks like this.

<div id="add-status" style="display:yes;">
  <h2><%= l(:redmine_status_update_your_status) %></h2>
  <% labelled_tabular_form_for :status, @status, :url => { :controller => 'statuses', :action => 'create', :id => @project}, :html => {:id => 'status'} do |f| %>
    <div class="box tabular">
      <p><%=f.text_field :message, :label => :message, :size => 60, :required => true %></p>
      <% unless @project %>
      <p><%=f.select :project_id, projects_with_create_status_permission.collect{|p| [p.name, p.id]}, :label => :project, :required => true %></p>
      <% end %>
    </div>
    <%= submit_tag l(:button_save) %> <%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("add-news")' %>
  <% end %>
</div>

only instert ":project" and ":message" instead of "Project" and "Message".

ru.yml Magnifier - Russian language file (1.03 KB)

RE: Plugin: Twitter-like status updates for projects - Added by Pavel Pivovarov over 8 years ago

It's a very good plugin, but how I can make status updates visible in activities?
I'm novice in programming, so can anyone help me?

RE: Plugin: Twitter-like status updates for projects - Added by Terence Mill over 8 years ago

You should really post that on a github issue as code contribution.

Pavel Pivovarov wrote:

And this is my russian translation.
But I made some changes in plugin code, to make menu title, "Message" field, and "Project" field work with translation properly
chande menu line in ./init.rb
[...]

and make ./app/viewers/statuses/_add_status.html.erb looks like this.
[...]
only instert ":project" and ":message" instead of "Project" and "Message".

RE: Plugin: Twitter-like status updates for projects - Added by Michael Sanders over 5 years ago

This is a plugin I would love to see updated. One of many great plugins that is now deprecated.

1 2 (26-47/47)