Skip to content

Commit

Permalink
Merge 1287406 into 58a32c8
Browse files Browse the repository at this point in the history
  • Loading branch information
bsuttor committed Sep 13, 2018
2 parents 58a32c8 + 1287406 commit 926eef5
Show file tree
Hide file tree
Showing 45 changed files with 436 additions and 108 deletions.
34 changes: 18 additions & 16 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
language: python

python:
- 2.7

sudo: false
cache:
pip: true
directories:
- buildout-cache/downloads
- buildout-cache/eggs

- eggs
- downloads
python:
- 2.7
env:
- PLONE_VERSION=4.3
- PLONE_VERSION=5.0
- PLONE_VERSION=5.1
install:
- mkdir -p buildout-cache/{eggs,downloads}
- python bootstrap-buildout.py --version=2.10.0 -c travis.cfg
- bin/buildout -Nc travis.cfg

- sed -ie "s#5-latest#$PLONE_VERSION-latest#" buildout.cfg
- python bootstrap-buildout.py --version=2.11.4
- bin/buildout -N buildout:download-cache=downloads code-analysis:return-status-codes=True annotate
- bin/buildout -N buildout:download-cache=downloads code-analysis:return-status-codes=True
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- firefox -v
script:
- bin/test
- bin/coverage run bin/test

after_success:
- bin/coverage run bin/test
- bin/createcoverage --output-dir htmlcov
- pip install coveralls==0.5
- coveralls

notifications:
email:
- devs@imio.be
9 changes: 6 additions & 3 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ Changelog
0.15 (unreleased)
-----------------

- Nothing changed yet.
- Call JS on portal_url so it can be cached by the browser.
[gbastien]
- Tests on Plone5 and Plone4.
[bsuttor]
- Manage profiles differently
[sgeulette]


0.14 (2018-07-23)
Expand All @@ -17,8 +22,6 @@ Changelog
0.13 (2018-06-13)
-----------------

- Call JS on portal_url so it can be cached by the browser.
[gbastien]
- Add <span> around cross <img> to ease override.
[mgennart]

Expand Down
42 changes: 19 additions & 23 deletions buildout.cfg
Original file line number Diff line number Diff line change
@@ -1,33 +1,35 @@
[buildout]
extends =
https://raw.github.com/collective/buildout.plonetest/master/test-4.x.cfg
https://raw.github.com/collective/buildout.plonetest/master/test-5.x.cfg
versions.cfg

extensions = mr.developer

parts =
instance
omelette
test
robot
coverage
report
code-analysis
createcoverage
releaser
i18ndude
omelette
robot
resources

develop = .
show-picked-versions = true

always-checkout = force
auto-checkout +=

test-eggs = collective.messagesviewlet [test]

[remotes]
coll = https://github.com/collective
coll_push = git@github.com:collective


[sources]


[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
Expand All @@ -49,7 +51,7 @@ environment-vars =


[code-analysis]
recipe = plone.recipe.codeanalysis
recipe = plone.recipe.codeanalysis[recommended]
directory = ${buildout:directory}/src/collective
flake8-exclude = bootstrap.py,bootstrap-buildout.py,docs,*.egg.,omelette
flake8-ignore = W391
Expand All @@ -59,7 +61,7 @@ flake8-extensions =
flake8-blind-except
flake8-debugger
flake8-coding

return-status-codes = False

[omelette]
recipe = collective.recipe.omelette
Expand All @@ -70,7 +72,7 @@ eggs = ${instance:eggs}
recipe = zc.recipe.testrunner
eggs =
${instance:eggs}
collective.messagesviewlet [test]
${buildout:test-eggs}
robotframework-selenium2screenshots
defaults = ['-s', 'collective.messagesviewlet', '--auto-color', '--auto-progress']
environment = testenv
Expand All @@ -87,20 +89,9 @@ eggs =
plone.app.robotframework[debug,ride,reload]


[coverage]
[createcoverage]
recipe = zc.recipe.egg
eggs = coverage
initialization =
include = '--source=${buildout:directory}/src/collective/messagesviewlet'
sys.argv = sys.argv[:] + ['run', include, 'bin/test', '--all', '-s', 'collective.messagesviewlet']


[report]
recipe = zc.recipe.egg
eggs = coverage
scripts = coverage=report
initialization =
sys.argv = sys.argv[:] + ['html', '-i']
eggs = createcoverage


[releaser]
Expand All @@ -112,3 +103,8 @@ eggs = zest.releaser
recipe = zc.recipe.egg
eggs = i18ndude


[resources]
recipe = zc.recipe.egg
eggs = Products.CMFPlone
scripts = plone-compile-resources
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
install_requires=[
'collective.behavior.talcondition',
'plone.api',
'plone.app.contenttypes',
'plone.app.dexterity',
'plone.app.lockingbehavior',
'plone.formwidget.datetime >= 1.2',
Expand Down
4 changes: 4 additions & 0 deletions src/collective/messagesviewlet/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# -*- coding: utf-8 -*-
"""Init and utils."""

from plone import api
from zope.i18nmessageid import MessageFactory


_ = MessageFactory('collective.messagesviewlet')

HAS_PLONE_5 = api.env.plone_version().startswith('5')
10 changes: 10 additions & 0 deletions src/collective/messagesviewlet/browser/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,23 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:plone="http://namespaces.plone.org/plone"
xmlns:zcml="http://namespaces.zope.org/zcml"
i18n_domain="collective.messagesviewlet">

<!-- Publish static files -->
<plone:static
zcml:condition="have plone-5"
name="collective.messagesviewlet"
directory="static"
type="plone"
/>

<browser:resourceDirectory
zcml:condition="not-have plone-5"
name="collective.messagesviewlet"
directory="static"
/>
<!-- End publish static files -->

<browser:viewlet
for="*"
Expand Down
6 changes: 4 additions & 2 deletions src/collective/messagesviewlet/browser/messagesviewlet.pt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
tal:condition= "messages"
i18n:domain="collective.messagesviewlet">

<script tal:attributes="src string:${view/portal_url}/++resource++collective.messagesviewlet/js.cookie-2.0.3.min.js"></script>
<script tal:attributes="src string:${view/portal_url}/++resource++collective.messagesviewlet/hidemessageviewlet.js"></script>
<tal:plone4 condition="python: not view.is_plone_5()">
<script tal:attributes="src string:${view/portal_url}/++resource++collective.messagesviewlet/js.cookie-2.0.3.min.js"></script>
<script tal:attributes="src string:${view/portal_url}/++resource++collective.messagesviewlet/hidemessageviewlet.js"></script>
</tal:plone4>
<tal:message repeat="message messages">
<dl tal:attributes="class python:'messagesviewlet-' + message.msg_type;
id message/hidden_uid">
Expand Down
12 changes: 7 additions & 5 deletions src/collective/messagesviewlet/browser/messagesviewlet.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
# -*- coding: utf-8 -*-

from collective.behavior.talcondition.utils import evaluateExpressionFor
from collective.messagesviewlet import HAS_PLONE_5
from DateTime import DateTime

from plone import api
from plone.app.layout.navigation.defaultpage import isDefaultPage
from plone.app.layout.navigation.interfaces import INavigationRoot
from plone.app.layout.viewlets import ViewletBase
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

from collective.behavior.talcondition.utils import evaluateExpressionFor


class MessagesViewlet(ViewletBase):
"""This viewlet displays all messages from this product."""
Expand All @@ -19,6 +18,9 @@ def __init__(self, context, request, view, manager=None):
super(MessagesViewlet, self).__init__(context, request, view, manager=manager)
self.portal = api.portal.get()

def is_plone_5(self):
return HAS_PLONE_5

def getAllMessages(self):
catalog = api.portal.get_tool(name='portal_catalog')
# Getting user roles on context
Expand All @@ -34,12 +36,12 @@ def getAllMessages(self):
sort_on='getObjPositionInParent')
messages = []
for brain in brains:
if brain.location == 'homepage':
obj = brain._unrestrictedGetObject()
if obj.location == 'homepage':
# Test if context is PloneSite or its default page
if not INavigationRoot.providedBy(self.context) and \
not isDefaultPage(self.portal, self.context):
continue
obj = brain._unrestrictedGetObject()
# check in the cookie if message is marked as read
if obj.can_hide:
m_uids = self.request.get('messagesviewlet', '')
Expand Down
10 changes: 10 additions & 0 deletions src/collective/messagesviewlet/browser/static/messagesviewlet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
$(document).ready(function(){
$("#messagesviewlet .close-button").click(function(){
var m_uids = $.cookie('messagesviewlet');
var m_uid = $(this).parent().attr('id');
if (typeof m_uids === "undefined") {m_uids = m_uid;}
else {m_uids += "|" + m_uid;}
$.cookie('messagesviewlet', m_uids, { expires: 60 });
$(this).parent().hide();
});
});
75 changes: 75 additions & 0 deletions src/collective/messagesviewlet/browser/static/messagesviewlet.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
.warning-formHelp {
color: orange;
}
.portaltype-messagesconfig #contentview-folderContents,.portaltype-messagesconfig #contentview-edit,.portaltype-messagesconfig #contentview-local_roles {
display: none;
}
dl.messagesviewlet-info,dl.messagesviewlet-warning,dl.messagesviewlet-significant {
border: 1px solid #996;
clear: both;
font-size: 80%;
margin: 1em 0;
}
dl.messagesviewlet-info {
background-color: #ffffe3;
dt {
background-color: #996;
}
}
dl.messagesviewlet-significant {
background-color: #fd7;
dt {
background-color: #d80;
}
}
dl.messagesviewlet-warning {
background-color: #fdc;
dt {
background-color: #d00;
}
}
dl.messagesviewlet-info dt,dl.messagesviewlet-warning dt,dl.messagesviewlet-significant dt {
width: 85px;
color: White;
float: left;
font-weight: bold;
line-height: 1.25em;
margin: 0 0.5em 0 0;
padding: 0.5em 0.75em;
}
dl.messagesviewlet-info dd,dl.messagesviewlet-warning dd,dl.messagesviewlet-significant dd {
line-height: 1.25em;
margin: 0 25px 0 110px;
padding: 0.5em;
}
.close-button {
float: right;
margin-top: -28px;
}
.state-inactive {
color: red !important;
}
#plone-contentmenu-workflow {
.state-inactive {
border-radius: 0.5em 0.5em 0.5em 0.5em;
background-color: red;
padding: 0 0.5em;
color: white !important;
border: 2px solid red;
}
.state-activated {
border-radius: 0.5em 0.5em 0.5em 0.5em;
background-color: blue;
padding: 0 0.5em;
color: white !important;
border: 2px solid blue;
}
}
.state-activated {
color: blue !important;
}

.icon-controlpanel-messagesviewlet_settings:before {
font-family: 'fontello';
content: '\E83B';
}
15 changes: 1 addition & 14 deletions src/collective/messagesviewlet/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<i18n:registerTranslations directory="locales" />

<include package=".browser" />
<include file="profiles.zcml" />

<permission
id="collective.messagesviewlet.addMessage"
Expand All @@ -25,20 +26,6 @@
handler=".subscribers.change_hidden_uid"
/>

<genericsetup:registerProfile
name="default"
title="collective.messagesviewlet installation"
directory="profiles/default"
description="Installs the collective.messagesviewlet add-on."
provides="Products.GenericSetup.interfaces.EXTENSION"
/>

<genericsetup:registerProfile
name="messages"
title="collective.messagesviewlet examples"
directory="profiles/messages"
description="Add default messages for collective.messagesviewlet."
provides="Products.GenericSetup.interfaces.EXTENSION"
/>

</configure>

0 comments on commit 926eef5

Please sign in to comment.