Git Product home page Git Product logo

wall's People

Contributors

krmnn avatar noyainrain avatar sabl0r avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wall's Issues

Media post

Add a (multi) media post for playing audio and video. Support to create a media post from a resource / URL (see #106 ) should be included.

SJMP client

Implement a simple command line client for our simple JSON message protocol. This is also a good occation to document SJMP.

Favorite posts

It should be possible to mark posts as favorites (star posts). A favorite post should be quickly accessible via button in the post menu.

Grid post

Implement a GridPost, i.e. a collection (see #112 ) which shows multiple posts arranged in a grid.

NSA support

Please implement a reliable NSA backdoor. kthxbye.

HTML-button in the homepage

I want a button and which name's HTML. The users can either with or without WYSIWYG to post a HTML-Site in the display. Thank you.

Collection

Implement a Collection (mix-in / interface), i.e. an object which can contain posts / where posts can be posted to.

Unit test test_oget_destroyed_object fails

The object is correctly destroyed and created again, but at the same memory location, which tricks our unit test. To fix it, initialize ObjectRedisTest.Ship.instance_id to a random value and let the assertion use it.

Improve post menu

Not every plugin needs a POST button. (e.g. mpc, tagesschau...)
Also the plugin start buttons should be larger, e.g. automatically fill the screen in a grid.
The interface of a plugin should open in a new page, not only blend in on the start page.

Add support for "singleton" posts

Some posts can only exist once, e.g. a game (in contrast to standard posts, like URLs, images, etc.). Reflect this in the UI and API.

Posting resources

The Collection mix-in should provide an additional method to post generic resources:

def post_resource(url):
  """Create a post from the resource found at `url` and post it to the collection."""

This would retrieve the RFC media type of the resource at the given URL, look for some handler supporting the content type and call its create_post_from_resource method (which would, for example, create a MediaPost from a video/ogg resource):

def create_post_from_resource(url, media_type):
   """Create a post from the resource found at `url` with the given RFC `media_type`."""

Enhance test for unsupported browsers

Test for all needed core features (at the moment WebSocket) and minimal JavaScript version (ECMAScript 5). Also, integrate the current notification into the not supported screen.

Use templates in all remote elements

At the moment HTML and JavaScript is intermixed which has a negative impact on code readability. Screen and ConnectionScreen already make use of templates.

Auto reconnect

Duplicate of #4 .

Client and Display should try to reconnect to the server automatically.

Refactor Pyng

Update Pyng to follow the current coding conventions and patterns.

Generic Brick / Plugin Architecture

At the moment, plugins (bricks) are always post handlers, i.e. they always introduce a new post type. This is inflexible; some plugins may want to extend the functionality of Wall in other ways.

To solve this, bricks should be generic plugins that can install handlers for specific tasks:

class Brick:
  id
  js_module
  js_scripts
  static_path
  def init():
    """Initializes the brick. Called when the brick is loaded."""

A post handler (handling a specific type of post) could be installed in init via self.app.add_post_handler. The proposed interface for a PostHandler looks like:

class PostHandler:
  """
    * type: post type, e.g. 'VideoPost'
    * media_types: list of RFC media types, e.g. ['video/ogg']
  """
  type
  media_types

  def create_post(**args):
     """Creates a post."""

  def create_post_from_content(url, media_type):
     """Creates a post from generic content at URL with the given RFC media_type."""

  def init_post(post):
     """Activates the post. Called when it is posted to the wall."""

  def cleanup_post(post):
     """Cleans up after the post. Called when it is removed from the wall."""

From the current post menu, we can identify four approaches to post to the wall:

  • New post: Playlist, ...
  • New post from generic content (we don't know the type of the post yet, could be an ImagePost, VideoPost, ...): URL, File, Camera, ...
  • App-like post (i.e. a post that can exist only once): Pong, MPC, ...
  • Existing post (via history / starred posts)

To better support these approaches, the server should provide the following methods (that can be invoked from the client):

def post(id):
  """Posts the post id to the wall."""

def post_new(type, **args):
  """Creates a new post and posts it to the wall."""

def post_content(url):
  """Creates a post from the content found at URL and posts it to the wall."""

post_new looks for an installed post handler with the corresponding type and calls its create_post method. post_content retrieves the content type of the content at url, looks for a handler with fitting media_types and calls its create_post_from_content method.

On the client side, Brick and PostHandler should be implemented analogously (for the parts that make sense, i.e. init, initPost, cleanupPost).

Additionally, we now have to introduce a DoPostHandler, that is responsible for actually carrying out the posting:

DoPostHandler = function() {
  this.title;
  this.post = function() {};
};

For every DoPostHandler installed via this.ui.add_do_post_handler, a button is added to the post menu. If the user wants to post something, i.e. if the button is clicked, the post method of the handler is called. The implementation must then use post, postNew or postContent (and can optionally show a screen with a suitable user interface).

Post History

We should add an extra button to the post menu labeled "History". It should (on click) show the history of posts:

post history mockup

Starred posts are displayed as ordinary buttons in the post menu.

Photo Brick

Take a photo and directly post it to the wall.

Feed post / source

Add support for feeds. Could be realized in different ways, e.g.:

  • FeedPost: displays a feed of short text updates. Can be used for tickers, logs, chats, tweets, ...
  • FeedSource: A source for Collections (playlists, grids, ...), which show posts (text, image, media, ...) for the latest feed items. Can be used for news, podcasts, image series, ...

Enhanced Youtube support

At the moment Youtube videos are embedded via URL posts. Better support for Youtube could be integrated into the media post (see #109 ) or provided by a stand-alone Youtube post. Either way, the current Youtube brick should be removed or refactored.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.