GSoC 2018 Ideas: SiteImprove plugin

I'm reminded that Plone lets you create validators at the field level, ie. a string field that should contain an email address, as well as at the complete form level, ie. checking that if one field has a certain value in it sets constraints on the values that can be in another field on the same form.

In a similar vein, perhaps this content quality plugin framework project could process not just the current item but could allow a plugin to specify other content on the site to process. An example might be to check for broken links on the entire site, versus just checking for broken links on the current page.

I think first step might to review other CMS and how to implement such checks. Also review the kind of checks that people might want e.g. Accessibility, spelling, broken links, some kind of layout guidance?
What I'm thinking though is that there could be a few different policies which might be configurable

  • on workflow vs on save vs click to check in tinymce
  • support for JS checks vs serverside
  • prevent save/transition vs just warn.
  • doing a full site audit might be too ambitious but perhaps support collecting various warnings so they can be viewed in a single control panel? I think there was a broken link checker plugin that worked that way.

I suspect content rules might be a good way to implement these policies since it allows conditions based on content and location etc. but content rules currently can't prevent something from being saved, or put anytime inside tinymce. The most it can do currently is put up a warning box. Perhaps one possible implimentation to extend what a content rule action can do?

1 Like

Hey all, I am Rahul, I have experiences on python and javascript . I have also worked on SEO before and looking forward to implement it here.

An example might be to check for broken links on the entire site, versus just checking for broken links on the current page.

may be this helps for checking broken links, figuring it out now: GitHub - stevenvachon/broken-link-checker: Find broken links, missing images, etc within your HTML.

Right now I am referring to https://www.vertical-leap.uk/blog/how-to-check-content-quality-of-a-website/ for more information about quality check and will provide a positive response soon

thank you
Rahul

I think there are already some add-on in plone that does one or two stuff separately like https://pypi.python.org/pypi/collective.linkcheck and few more at https://docs.plone.org/4/en/working-with-content/content-quality/content-quality-helpers.html . So one have to integrate them into one and add some of the additional features into it like @djay and @tkimnguyen suggested?

@singhrohit41 In my limited knowledge we have to make a different plugin along with castle cms quality check that @tkimnguyen has mentioned and have to use some of the javascript(may be) as mentioned in http://devsiteimprov.wpengine.com/siteimprove-cms-plugin-integration-cookbook/ . I am currently reviewing how castle cms has implemented these features like multiple site confusion,incomplete domain, misplaced keyworks etc.

Hello @tkimnguyen
I have already gone through the plone documentation and would like to work on this project. Is there anything more which I have to look before getting into this project.
Thank You

Hi @iamar7 - thanks for your interest :slight_smile: All thoughts on this topic so far have been posted above.

Hi all as I was busy for little while I was not able to work on this project as required. As I am free again and wants to cope up.
I have one question as it is written in gsoc Idea page of plone.org that :-'Two additional plugins should be provided for SiteImprove and axe-core (maybe via axe-cli) to provide actual feedback on accessibility issues.'

do I have to make three plugins or all the properties that are required in a single plugin?
@cewing @tkimnguyen @djay @loechel
Thanks

@singhrohit41 I will expect 3 plugins, one core module that should go inti Plone core in the long run, and two example addons that show how to plug in a sophisticated solution.

2 Likes

@singhrohit41 without having at least a few plugins, it is not really possible to ensure that a framework for plugins is truly generalized. You should see each plugin you add as a chance to discover which parts of the problem space belong in the plugin system, and which parts belong in the core plugin framework. To that end, @loechel is absolutely right to expect at least three plugins as an outcome for this project.

1 Like

Thanks
@cewing @loechel @tkimnguyen @djay @sally
So far what I have understood is ( correct me if I am wrong) that one has to make a generalized plugin architecture with the implementation of SiteImprove plugin (content quality tool)
-port the castle's content quality check feature and move it to plone.
-add additional checks such as accessibility, SEO errors, spelling errors, broken links etc
-that can support both mandatory checks and transition, on save and button to check in tinymce anytime
-support for JS checks
-all of this in one core module and few additional example addons/plugins to provide actual feedback on accessibility issues.

1 Like

I think you missed the following feature-

  • check on page vs site
  • rollup report of content in such a way that - it allows the user to view the results of the processing and mark items as done/fixed or to be done later (don't forget comfortable UX is another major scope of the project)
2 Likes

thanks @Shriyanshagro
I had first one in mind but completely forgot about the second one.

@singhrohit41 @Shriyanshagro that is a good summary. When you list it all together, I see it could be overly ambitious :slight_smile:

I hadn't thought of this being doable from TinyMCE. It might be a nice way to invoke it, but calling more JS from inside TinyMCE might be asking too much.

1 Like

Well thanks @tkimnguyen

then let us keep it for the future aspects of plugin. Maybe after we have covered the other stuff nicely and correctly.

@sally I am not able to get it, can you explain this briefly?

In Plone, certain content types have a field called "description". This field can serve (and often does serve) two different purposes. The first is to be a summary of the content of the item, to be displayed above the item as a sort of "abstract" or "summary". The second is to serve as "metadata" about the content to be used in html meta- tags, facebook graph tags and so on. It's often a problem that the same one field serves both purposes.

@sally, is that what you had in mind?

Three purposes. It is also used in search results. Having some kind of adapter or ability to dynamically generate a summary based on either the content and/or the search terms would be a nice addition to plone. esp if it can work in with elasticsearch summaries

@cewing thanks for the explanation, I got clearity that @sally was trying to say that it would be better if the summary and the meta-data description has separate fields? Correct me if I am wrong. @djay can you explain what you meant by elastic search summaries?

Where is the plugin directory in Plone and how to activate a plugin such that it shows on the localhost?
I know that in the local host we have to go to site-setup -> Addons to see the list of add-ons but my doubt is if, I created a new add-on which is not on PyPI Packages hence cannot be installed by buildout, so where shall I place the new package and what else should we have to do such that the new add-on will list in the site-setup.
If the add-on is in PyPI package then the buildout changed is of the Plone/zinstance directory na?