Giter VIP home page Giter VIP logo

ella's Introduction

Ella CMS

Ella is opensource CMS based on Django framework, designed for flexibility.

It is composed from several modules:

  • Ella core is the main module which links the rest together. It defines architecture on which other modules are built but doesn't do anything really usefull all alone.
  • Ella core plugins are plugins that are shipped in one package together with Ella. There are articles and positions which we consider to be a basic toolbox for each Ella site.
  • Other Ella plugins are standalone applications (and therfore not shipped with the core) that provide some specific functionality using Ella's architecture. We can mention polls, galleries, quizes and many more.

Feature highlights:

  • Simple organization of content based on categories
  • Efficent implementation of the published content
  • In-build photo formating backend
  • Django-admin ready
  • Plugin system
  • Flexibile
  • Scalable
  • Extensible
  • Caching-friendly
  • Well tested
  • Proven in production environment

News

Currently, we released the 3.x version which features a major cleanup of the code a removal of unneeded dependencies.

More news are on the way as we are going to make a nicely-tailored admin specifically made for the need of news writers and editors.

Docs

Docs are hosted on readthedocs.org, go to http://ella.rtfd.org.

Community

Quickstart

Have a look at the docs: http://readthedocs.org/docs/ella/en/latest/quickstart.html.

Build status

Master branch

Travis CI - Distributed build platform for the open source community

ella's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ella's Issues

Switch django-tagging to django-taggit

I am proposing exchange of tagging application for ella 2.0. There are several important reasons to do this.

django-tagging is not maintained anymore

Last commits were introduced in the begging 2010 which most likely means it's not maintained anymore.

One one hand, it's partially true for django-taggit as well. The last commit goes to spring of 2011. However, there is a big amount of living forks which looks like it will not die out any soon.

The bad news is that it looks like it's still not working properly in django 1.3 so some small praticipation might be needed.

Current implementation makes it hard or almost impossible to sort tag list by date

Sorting tagged items by date is quite a must-have feature and without it, it just makes tags a little unusable overally. The main reason for this is following piece of code:

def get_tagged_publishables(tag):
    now = datetime.now()
    queryset = Publishable.objects.filter(
        Q(placement__publish_to__isnull=True) | Q(placement__publish_to__gt=now),
        placement__publish_from__lt=now).distinct()
    return TaggedItem.objects.get_by_model(queryset, tag)

This effectively prevents us from sorting by anything in DB. Only solution would be to sort in Python (not a good one though).

django-tagging allows for bad characters in URL

One can enter something with "/" character in it which then breaks in tag listing. Ella might be solving this, but that's not a good way to go.

There is known way to migrate from tagging to taggit that could be automated in migrations

Simply adhere to following blog post, only automate it a little: http://birdhouse.org/blog/2011/04/17/migrate-django-tagging-taggit/.

Allow '-' symbol in tag_list URL

Tags can have dashes in them while it's not possible to reverse such a URL, e.g:

NoReverseMatch: Reverse for 'tag_list' with arguments '()' and keyword arguments '{'tag': u'g-20'}' not found.

The reason is following URL declaration:

urlpatterns = patterns('',
    url(r'^(?P<tag>[\w\s]+)/', TaggedPublishablesView.as_view(), name="tag_list"),
)

Database error and PostgreSQL

In the branche "future/django-1.3" and with PostgreSQL backend appears Database error. Especially in the case of creating an article in the newman interface and with PostgreSQL (version 9.0). This bug doesn't appear with sqlite3 backend.

Traceback (most recent call last):
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 68, in call
return self.application(environ, start_response)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 272, in call
response = self.get_response(request)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/core/handlers/base.py", line 169, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
return debug.technical_500_response(request, _exc_info)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, *_callback_kwargs)
File "/home/budeb/work/ella/ella/newman/options.py", line 187, in wrapper
return self.admin_site.admin_view(view)(_args, *_kwargs)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/utils/decorators.py", line 93, in _wrapped_view
response = view_func(request, _args, *_kwargs)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/views/decorators/cache.py", line 79, in _wrapped_view_func
response = view_func(request, _args, *_kwargs)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/contrib/admin/sites.py", line 197, in inner
return view(request, _args, *_kwargs)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/transaction.py", line 217, in inner
res = func(_args, *_kwargs)
File "/home/budeb/work/ella/ella/newman/options.py", line 852, in add_json_view
context = self.get_add_view_context(request, form_url)
File "/home/budeb/work/ella/ella/newman/options.py", line 819, in get_add_view_context
context = super(NewmanModelAdmin, self).get_add_view_context(request, form_url)
File "/home/budeb/work/ella/ella/newman/xoptions.py", line 361, in get_add_view_context
self.save_formset(request, form, formset, change=False)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/contrib/admin/options.py", line 677, in save_formset
formset.save()
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/forms/models.py", line 482, in save
return self.save_existing_objects(commit) + self.save_new_objects(commit)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/forms/models.py", line 613, in save_new_objects
self.new_objects.append(self.save_new(form, commit=commit))
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/forms/models.py", line 717, in save_new
obj.save()
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/base.py", line 460, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/base.py", line 553, in save_base
result = manager._insert(values, return_id=update_pk, using=using)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/manager.py", line 195, in _insert
return insert_query(self.model, values, **kwargs)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/query.py", line 1436, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 791, in execute_sql
cursor = super(SQLInsertCompiler, self).execute_sql(None)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
cursor.execute(sql, params)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/backends/util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "/home/budeb/.virtualenvs/sensa2/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
return self.cursor.execute(query, args)
DatabaseError: can't adapt type 'UnicodeWrapper'

Better RSS title

Curretly it says First X objects from category Y. This doesn't sound very cool. Better would be bare name of category.

Dependency wrapper for Ella plugins

It would be nice to create some dependency wrapper between plugins. Nice example can be imports app. This one needs articles, but one can imagine articles can very nicely live without imports so it doesn't make sense to merge the apps.

Instead, we should create some dependency-checking mechanism for each module. Putting the dependency into setup.py is not sufficent, because the fact that it's installed doesn't necessarily mean that it's included in INSTALLED_APPS too.

The wrapper can be fairly simple, just simple checking and in case that dependencies are not met, warning should be raised.

What do you think?

Simple admin interface for writers/editors

There should be simple interface for writers/editors. Not newman, but something forged specifically for them. Lightweight, not build on Django admin, customized only for them.

Newman is not sufficent, because it's just way too puffy. Most of writers use only articles + photos/galleries.

We need to discuss the basis of implementation though. In my point of view, it has to be javascript-heavy frontend as user-friendly as possible.

Provide a way for better URLs for static pages (static articles)

Very often we struggle with "nice URLs" that categories are blocking. This is mostly the case for static pages like contact page, usage conditions and so on.

In some other CMS product, we have seen nice solution which allowed to select different behaviours for different categories. Most interesting are: article listing and showing detail of specified article. A feature like this would solve our URL issue.

So far, there are several ways how to handle such pages in Ella, but none of them is pleasant.

  1. Someone will probably argue that such a function is already available using static articles (or static placements before cleanup started). This is true but static articles' URL just sucks. We don't like having /static/ prefix in URL just because the CMS doesn't know how to do it properly.

  2. Using category description to contain HTML to render the page. This smells on the first sight.

  3. Put all the HTML in category template. This isn't nice too because you cannot alter the HTML from administration, nor you can change the behaviour of this given category if requested without help of developer.

As you can see, nice solution is missing. This kind of behavior doesn't necessarily need to be in Ella's core, but I would really appreciate if we can find out some nice way how to do this (an app which uses category metadata JSONField and overrides urls file and category detail?).

Remove attachements

Or at least clean it up - cleanup tests, convert to unit tests, remove templates form app...

again this is something that can live as a tiny plug-in app for ella.

Remove Interviews

The interviews app has some CH - specific features and is not suited to be in a generic purpose CMS.

Fix inheritance of HTML templates

There is an issue. I've got web with 4 main categories (A, B, C, D). Every main category has another subcategories. Because category D is special (looks completely different), I need separate template. Separate template is in page/category/D/category.html. But I have also subcategories (D1, D2, D3,..) which I want to look exactly as parent - category D. So I need to create separate templates for each subcategory. Subcategory template only content something like this

{% extends "page/category/D/category.html" %}

It's really mess in file system and you need to create separate subcategory template every time you add new subcategory. So the editor is depend on developer and deploying process. It's not good.

Ella should search even in tree_path of category. Something very similar is working in positions. If it works, there would be only one separate template for category D and subcategories D1, D2, D3,.. would use template of parent category D.

Mass-uploaded photos not added to gallery

/galleries/gallery/$n/ =>
Gallery Items =>
magnifier =>
Mass upload =>
select and upload photos =>
I'm returned to gallery edit page but the new photos are not automatically added to the gallery

Drop support for multiple article contents

This seems obsolete since even newman doesn't show more contents to fill up. Let's save some performance and move the articles_articlecontents to articles_article table.

To allow for multiple_contents, simple solution like in ella_toolkit can be used instead.

Add published BooleanField to Publishable

I know you can un-publish something by changing the publish_from, but that can be fragile. I propose we add a pubslihed boolean to Publishable and use that as an additional filter in listings.

The idea is to un-publish something easily as well as enable elementary workflow - anybody can create a Publishable, schedule it's publication (set publish_from), but only once somebody (editor) sets the published boolean it will be visible.

For sites that don't need or want this workflow it's just a column in the database and you can set your admin to always flip that to "yes" position.

Add a generic JSONField to Publishable to store project-specific metadata

Almost every application I have seen on ella has some need for added flexibility. I propose we add an optional JSONField to Publishable that individual plug-ins and projects can use to store their specific stuff. Some examples:

  • store comment count with publishable
  • tag lists
  • importance
  • source information (commercial, licence)
  • template used to render
  • ....

I also believe some conventions (a two line note in help_text fo the fields sounds enough) should be in place to provide namespaces (for example store your stuff under "app_name", for example:

{
'comments': {'count': 12, 'latest': '20120128'},
'tagging': {'public_tags': ['summer'], 'editorial_tags': ['white bikiny']}
}

Competition/Quizes answers not added on save

When saving competition/quiz, created answers along with responses are not saved (not even one of them).

Prefered solution is major simplification/refactoring of JS widgets that are used since current ones are highly confusing to the users.

Object deleting does not work

When deleting object, the page hangs saying something about too much recursion. The object is deleted on background though.

Remove/split Polls

it would be nice if we could get the polls app into a separate repo and maybe split the Poll/Contest/Quiz models into several different apps. Maybe cleanup and denormalize the models in the process.

Ella -> core + plugins

We need to decide on conventions for ella plugins and which modules will be kept in core after the process. Seems like the only module with direct ties to core should be photos (where I would highly appreciate to use some interface to allow for sorl-thumbnail as I stated before).

Moreover, it is needed to decide on who will do the thing. In Fragaria, we would like to handle polls, since we use them quite often. Major refactoring will be most likely included even though we originally proposed to postpone it.

@whit said, he would like to keep following naming convention for all ella plugins: ella_[PLUGIN_NAME].

So there would be ella_articles, ella_polls etc.

This leads to some minor troubles with DB table names and references in the code itself. There will have to be migrations to rename all the tables.

Please, share your opinions here. We would like to start working on this next week.

Update the tutorial to reflect butchered ella

Let's go through the tutorial and shorten it a bit - just enough so that any djangista can get ella up and running in 10 minutes with basic understanding of basic concepts (Publishable, Listing and Box).

Error in contestant change list after adding a contestant

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/newman/polls/contestant/

Django Version: 1.3.1
Python Version: 2.7.2
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.staticfiles',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.sitemaps',
 'django.contrib.redirects',
 'django.contrib.admin',
 'django.contrib.comments',
 'ella.core',
 'ella.articles',
 'ella.photos',
 'ella.db_templates',
 'ella.galleries',
 'ella.polls',
 'ella.ellatagging',
 'ella.ratings',
 'ella.newman',
 'ella.newman.licenses',
 'ella.ellaadmin',
 'ella.imports',
 'ella.interviews',
 'ella.positions',
 'ella.catlocks',
 'ella.sendmail',
 'ella.attachments',
 'ella.series',
 'ella.ellacomments',
 'ella.ellaexports',
 'example_project.services',
 'tagging',
 'djangomarkup',
 'threadedcomments']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'ella.newman.middleware.AdminSettingsMiddleware',
 'ella.newman.middleware.ErrorOutputMiddleware')


Template error:
In template /home/xaralis/workspace/ella/ella/newman/templates/newman/change_list.html, error at line 102
   Caught IndexError while rendering: list index out of range
   92 :         <form class="js-form js-dyn-adr" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>


   93 :             {% csrf_token %}


   94 :             {% if cl.formset %}


   95 :                 {{ cl.formset.management_form }}


   96 :             {% endif %}


   97 : 


   98 :             {% ifnotequal cl.paginator.num_pages 1 %}{% pagination cl %}{% endifnotequal %}


   99 :             {% block result_list %}


   100 :                 {# % if actions_on_top and cl.full_result_count and not is_popup %}{% admin_actions %}{% endif % #}


   101 :                 {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}


   102 :                  {% newman_result_list cl %} 


   103 :                 {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}


   104 :             {% endblock %}


   105 :             {% block pagination %}{% pagination cl %}{% endblock %}


   106 :             <div class="js-form-metadata">


   107 :                 <input type="hidden" name="success" id="changelist-batch-success" />


   108 :                 <script type="text/javascript">


   109 :                     $('#changelist-batch-success').data('callback', changelist_batch_success);


   110 :                 </script>


   111 :             </div>


   112 :         </form>


Traceback:
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
  307.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  93.                     response = view_func(request, *args, **kwargs)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  79.         response = view_func(request, *args, **kwargs)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  197.             return view(request, *args, **kwargs)
File "/home/xaralis/workspace/ella/ella/newman/options.py" in changelist_view
  459.         return render_to_response(self.change_list_template, context, context_instance=template.RequestContext(request))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/shortcuts/__init__.py" in render_to_response
  20.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
  188.         return t.render(context_instance)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  123.             return self._render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in _render
  117.         return self.nodelist.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  744.                 bits.append(self.render_node(node, context))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  73.             result = node.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  127.         return compiled_parent._render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in _render
  117.         return self.nodelist.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  744.                 bits.append(self.render_node(node, context))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  73.             result = node.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  64.             result = block.nodelist.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  744.                 bits.append(self.render_node(node, context))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  73.             result = node.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  64.             result = block.nodelist.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  744.                 bits.append(self.render_node(node, context))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/debug.py" in render_node
  73.             result = node.render(context)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/template/base.py" in render
  921.                     dict = func(*args)
File "/home/xaralis/workspace/ella/ella/newman/templatetags/newman_list.py" in newman_result_list
  29.             'results': list(results(cl))}
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in results
  217.             yield ResultList(None, items_for_result(cl, res, None))
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
  209.         super(ResultList, self).__init__(*items)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
  137.             f, attr, value = lookup_field(field_name, result, cl.model_admin)
File "/home/xaralis/ve/ella/local/lib/python2.7/site-packages/django/contrib/admin/util.py" in lookup_field
  216.             attr = getattr(obj, name)
File "/home/xaralis/workspace/ella/ella/polls/models.py" in points
  434.             for v in vs[1].split(','):

Exception Type: TemplateSyntaxError at /newman/polls/contestant/
Exception Value: Caught IndexError while rendering: list index out of range

Final testing before accepting 2.1.0

Looks like we have fixed all the issues that were blocking final django-1.3 compatibility release. We have put the changes into proposals/2.1.0 branch (last changes in commit 0b5f605). Please, have a look at this version and report any new errors.

Just to let you know, this has been put into proposals so we are not accepting any new features, only bug fixes related to Django 1.3 compatibility.

Document Ella's "plug-in" API

Take one of the apps we want to rip out of ella, clean it up and use it as an example on how a re-usable ella plug in should look like. The basic idea is that such an app shoudl have:

models (inheriting from Publishable where applicable)
custom box class
templatetags
custom_urls

Remove newman into separate app

Create an ella/newman repo and move newman there.

We can keep all the newman_admin.py files in ella for the time being although I would love for them to move into newman as well in the future.

This would simplify deployment and development greatly - it would reduce the number of requirements for ella, stabilize it's development process (no reason why newman's dev cycle should be bound to that of ella).

If done right (the app within newman would still be called newman), we can avoid having to create migrations as the table names will remain the same.

I would be more than happy if we still had the opton to use newman for ella, we could point to it in the docs etc. We can alway move the newman-specific part of the docs with newman and I would be happy to help with integrating those.

Incompatible pagination

It would be nice to have ella's pagination (/?p=2) the same way as django's pagination (/?page=2).

Priority of objects in category listing

Now ella prioritize objects in category listing by date & time of placement. Problem is that placement also control when the object is visible in category.

Common case is that editor wants to everyday publish new objects but he also want to keep old object on top of listing, because the object really work and users click on it. Here is the example:

0 day order of articles: A, B, C, D
1 day order of articles: A, E, F, G, B, C, D

There is no easy way for editors how to do that. In Newman there should be one page, where editors easily see (and of course simply change) order of objects for specific time and specific category.

Get rid of Format model

On today's meeting with @martinbilek and @whit we agreed that it will be nice to get rid of photo format altogether and switch to Django settings-based formats. There nothing really useful about the way photo formats are defined as it's usually done only once during the site lifecycle - at the time the site is built.

By using settings-based formats, we will save some DB queries and it will be much simpler to manage the list of formats.

Shorter URLs for static Publishables

I propose we use /category/sub/articles/123-article-slug/ as a URL for an Article with static=True

if nobody has serious complains I will go ahead and implement it tomorrow.

Can't "Add article" - window is locked

When click to "Articles -> New article" I see modal window "Loading media..." and nothing happening. Main window where I can enter title, metadata, etc. is locked by this modal window.

Can I give you some debug logs to figure out the problem?

Thanks.

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.