This document discusses adding permissions and front-end editing capabilities for Joomla modules. It begins with an agenda and overview of the topics to be covered, including imagining permissions at the module manager, type, and instance levels. It then covers how modules are different than other Joomla elements in having types and parameter fields. The document outlines setting permissions through module actions and settings. It provides a status update that the author had working code for front-end editing involving a new component, library, and plugins. The author is refactoring the code to not require modifications and to allow configuration through a component. The presentation concludes by inviting interested parties to beta test and sign up to receive updates on the project.
Making your user happy – how to create a perfect profileLetsConnect
User profiles are one of the most important parts of IBM Connections and your social business.
IBM Connections features a set of scripts that will enable you to create basic profiles based on your corporate LDAP Directory. As IBM is leveraging the power of the Tivoli Directory Integrator for this task, you can customize it and grab data from almost any system. HR data from SAP, photos from a Relational database, skillsets from a Domino database and much more.
Making your user happy – how to create a perfect profileLetsConnect
User profiles are one of the most important parts of IBM Connections and your social business.
IBM Connections features a set of scripts that will enable you to create basic profiles based on your corporate LDAP Directory. As IBM is leveraging the power of the Tivoli Directory Integrator for this task, you can customize it and grab data from almost any system. HR data from SAP, photos from a Relational database, skillsets from a Domino database and much more.
Streamlining the Client's Workflows (in Joomla)Randy Carey
When our client or their staff login to manage their site and content, they have specific tasks in mind. This presentation demonstrates how we can identify these tasks and develop each into an intuitive set of streamlined steps. We will be examining ways to reduce the number of steps, reduce clutter, and make the entire process intuitive for our client.
Essays on economic analysis of competition law: theory and practice (Ph.D. di...Dr Danilo Samà
Essays on economic analysis of competition law: theory and practice
Author:
Dr Danilo Samà (LUISS “Guido Carli” University, Law & Economics LAB)
Abstract:
The Ph.D. dissertation, submitted to LUISS “Guido Carli” University of Rome in fulfillment of the requirements for the Degree of Doctor of Philosophy in Economic Analysis of Competition Law (XXV cicle), is the result of a scientific research in the field of the economic analysis of competition law developed through academic experiences at the Erasmus Rotterdam University in the Netherlands, the Ghent University in Belgium, the University of Hamburg in Germany and the Toulouse School of Economics in France, as well as through professional experiences as competition economist at the Antitrust Department of Pavia & Ansaldo and the Directorate-General for Competition (DG COMP) of the European Commission.
Keywords:
antitrust, competition economics, competition law, competition policy
JEL classification:
B21; C01; K21; L00; L4
Year:
2014
Pages:
1-40
Citation:
Samà, Danilo (2014), Essays on economic analysis of competition law: theory and practice, Law & Economics LAB, LUISS “Guido Carli” University, Rome, Italy, pp. 1-40.
In the presentation I talk about content management joomla sites and present and compare six CCKs for Joomla. A great resource for you squash your precious hours.
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
Video that accompanies this presentation at: http://www.youtube.com/watch?v=UNjn6bOJ308
Spring Surf has been updated to allow increased customization and extensibility. This session will demonstrate how these capabilities can and have been used in Alfresco Share to add, remove and modify its appearance without needing to copy and paste code.
Streamlining the Client's Workflows (in Joomla)Randy Carey
When our client or their staff login to manage their site and content, they have specific tasks in mind. This presentation demonstrates how we can identify these tasks and develop each into an intuitive set of streamlined steps. We will be examining ways to reduce the number of steps, reduce clutter, and make the entire process intuitive for our client.
Essays on economic analysis of competition law: theory and practice (Ph.D. di...Dr Danilo Samà
Essays on economic analysis of competition law: theory and practice
Author:
Dr Danilo Samà (LUISS “Guido Carli” University, Law & Economics LAB)
Abstract:
The Ph.D. dissertation, submitted to LUISS “Guido Carli” University of Rome in fulfillment of the requirements for the Degree of Doctor of Philosophy in Economic Analysis of Competition Law (XXV cicle), is the result of a scientific research in the field of the economic analysis of competition law developed through academic experiences at the Erasmus Rotterdam University in the Netherlands, the Ghent University in Belgium, the University of Hamburg in Germany and the Toulouse School of Economics in France, as well as through professional experiences as competition economist at the Antitrust Department of Pavia & Ansaldo and the Directorate-General for Competition (DG COMP) of the European Commission.
Keywords:
antitrust, competition economics, competition law, competition policy
JEL classification:
B21; C01; K21; L00; L4
Year:
2014
Pages:
1-40
Citation:
Samà, Danilo (2014), Essays on economic analysis of competition law: theory and practice, Law & Economics LAB, LUISS “Guido Carli” University, Rome, Italy, pp. 1-40.
In the presentation I talk about content management joomla sites and present and compare six CCKs for Joomla. A great resource for you squash your precious hours.
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
Video that accompanies this presentation at: http://www.youtube.com/watch?v=UNjn6bOJ308
Spring Surf has been updated to allow increased customization and extensibility. This session will demonstrate how these capabilities can and have been used in Alfresco Share to add, remove and modify its appearance without needing to copy and paste code.
In this presentation, I presented how to build an angular JS Application with SPA in mind and also make sure you use up all the available concepts to create versatile and creative web application with less boilerplate javascript code.
This presentation is all about : why do we need Front-end developers, how do they work and what techniques, tools, languages and frameworks they are using on daily basis.
# Do you work so hard that you don’t have time to catch up with all the new front-end trends?
# Are you pondering to hire a front-end developer but you are still unsure if it is worth?
# Do you think it is about time to leave the full-stack development and focus in the front-end?
During presentation I will try to answer all those questions giving a complete overview on how Front-end apps are being developed. I will talk about : workflows, automated processes, Linting & styling, SASS, Unit and E2E testing, TDD, Hot reload, JS typed libraries, UI component libraries, UI frameworks and much more.
Discussion and demo of current Drupal development trends focusing on the Features module solution to the Drupal migration and revision control problem.
Liferay, Inc., is an open-source company that provides free documentation and paid professional service to users of its software. Mainly focused on enterprise portal technology, the company has its headquarters in Diamond Bar, California, United States
Introduction
Require JS
Handlebars
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
Presented at JoomlaDay Chicago 2019
Of all the features introduced throughout Joomla 3, subforms is the one I rely on most. Subforms are a field type like text, dropdowns, and date pickers. Subforms solve important content issues and significantly improve usability in managing content and settings.
In this presentation I will provide an introduction to subforms, what they can do, and the flex points where we can customize them within our own projects and extensions. Then I will demo and discuss the various ways I have deployed subforms across projects. I’ve come across interesting client needs, and I will illustrate some creative solutions using subforms.
For those of you who are a developer, I will show you how I incorporate subforms into my custom extensions. If you are not a developer, you will be exposed to the potential of subforms and be able to contact me or another custom developer to solve that challenging content problem.
Add-On Development: EE Expects that Every Developer will do his DutyLeslie Doherty
A presentation on Add-On Development: EE Expects that Every Developer will do his Duty as given at the EECI2009 conference in Leiden by Paul Burdick, lead developer at Solspace.
Add-On Development: EE Expects that Every Developer will do his Dutyreedmaniac
Add-Ons are what make ExpressionEngine the flexible powerhouse that it is today. Being able to write your own simple plugins or incredibly expansive modules allows you to mold ExpressionEngine to nearly any task that your website might require. However, with that power comes a great responsibility to insure that your code is not slowing down the entire site or unduly stressing the server through bad code architecture.
There are simple tools already built into ExpressionEngine and PHP that you can use to see precisely what your Add-On is doing during page processing and where it might be doing more work than is absolutely necessary. Every developer should use these to optimize their work from the very beginning of development, prior to release. This workshop will explain these tools and how you can use them effectively. It will also delve deeper into optimization techniques and tricks that will keep your code light and clean, while finding a balance between functionality and performance.
When you complete this module, you should be able to do these tasks :
• Explore the content of a module
• Analyze the information in a module
• Create, move, edit and delete artifacts in a module
• Identify and implement hierarchical data structures in a
module
Introduction
Require JS
Handlebars
Conclusions
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2015.
http://www.ivanomalavolta.com
This presentation introduces the new WCM features of SharePoint 2013 that web developers/architects can consider when desgining and developing Publishing websites on SharePoint 2013
In this session, you will learn how to extend and customize a ContentBox application. Get a deep understanding of leveraging custom modules and dynamic pages to create highly customized and engaging ContentBox apps.
Sometimes there are things that we need to customize to fill our business needs, and ContentBox allows you to create custom modules to take care of those special needs.
Similar to Joomla Modules with Permissions and Front-End Editing (20)
How Joomla! builds a webpage (annotated)Randy Carey
Understand how Joomla builds its output. We discuss the implications regarding flexibility, plugins, cache, and special formatting such as JSON as an API response.
A CMS has many users: authors, SEO experts, ecommerce, marketing, site managers, etc. Each has different roles and goals for accessing the website. How do we improve the user experience for each of those to help them do their jobs and accomplish their goals? See and learn how we can do better than do-it-yourself tools and using a CMS out-of-the-box.
The issues are presented as challenges to any CMS and web project, and the implemented solutions are demonstrated in Joomla.
When a site is out-of-date and/or its CMS is limited, often the best solution is a site migration. The migration is an opportunity to implement an entirely new look-and-feel, mobilize the site, fix navigation, re-assess the site’s goals, and re-organize content. A migration provides an opportunity to run the site on a CMS that is more powerful and more user-friendly like Joomla.
Randy is the migration lead and content strategist for the migration project of the Joomla! Community Magazine which includes over a thousand articles filled with links, images, and attachments. He will share the challenges that the project faces, the strategy for migration, and a high-level explanation of the approach in Joomla. The discussion will be suitable for the business-minded who must understand the issues and make decisions accordingly as well as for the developer who must implement a solution.
We can help our clients better manager their websites and web content if we give them a CMS interface that is tailored to their needs. So instead of expecting them to use a one-size-fits-all admin template, we provide a client template that is tailored to those who will be managing the website through the CMS.
This presentation, delivered at the 2013 Joomla World Conference, illustrates the client template and how it can be tailored.
A review of the mechanics behind Joomla's ACL, then a discussion as to how one can leverage a role-based access control system through Joomla - to improve the user experience for those managing the website and its content.
Please open the tab below to view my NOTES PER SLIDE.
Improving the Client's User Experience - JAB 2012Randy Carey
An applied strategy for improving the CMS user experience from the client's perspective. Presented at J and Beyond 2012, Bad Nauheim, Germany.
See slide notes for slide-by-slide comments.
Improving Joomla’s Backend User ExperienceRandy Carey
Two types of users access a CMS - the developer and those managing a site's content. Each uses the CMS with different goals and usually with different capabilities. This presentation focuses on tailoring Joomla to give our client's an improved user experience.
Presented at Joomla Day Midwest (Nov 12, 2011 - Milwaukee, WI USA)
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
2. SlideShare viewers: My slide presentations
are highly visual and illustrative, and since
you can’t hear me narrate, I provide my
narration in the notes section. Each slide
includes some narration.
To get the most out of this
presentation, please open the notes section
(below) and read the narration as you walk
through the presentation.
16. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
17. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
18. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
19. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
20. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
21. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
iCueProject.com
22. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
25. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
40. If we have FEE, we need permissions on modules
53. Modules with Permissions:
at three levels
• Module Manager
permissions: who can edit which modules
• Module Type
permissions: actions module settings
• Module Instance
permissions: set permissions per instance
54. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
60. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
61.
62.
63.
64. Modules with Permissions:
Types of Modules
modules
types
modules
types
modules
types
modules
types
list of items
single item
functional
content-based
65. Modules with Permissions:
Types of Modules
List of items
• category or categories
• RSS feeds
• Events
• latest users
• weblinks
• showcase/
slideshow
66. Modules with Permissions:
Types of Modules
single item
• banner
• Breadcrumbs
• menu
• logo holder
• header – image
• footer
• random image
• statistics
78. Parameter fields for
Articles Category
Filtering
• Featured articles
• Count
• Category Filtering Type
• Category
• Child Category Articles
• Category Depth
• Author Filter Type
• Authors
• Author Alias Filter Type
• Author Aliases
• Article IDs to Exclude
• Date filtering
• Date Range Field
• Start Date Range
• To Date Range
• Relative Date
Ordering
• By article fld
• Ordering direction
Grouping
• Article grouping
• Direction
• Month/year format
Display
• Heading level
• Linked titles
• Date
• Date field
• Date format
• Category
• Hits
• Author
• Introtext
• Introtext limit
• Show “ReadMore”
• Title+ReadMore
• “ReadMore” limit
Advanced
• Alternative Layout
• Mod Suffix Class
• Module Tag
• Bootstrap Size
• Header Tag
• Header Class
• Module Style
79.
80.
81.
82. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
iCueProject.com
83. Status at JAB 2013
At the time this presentation was given at JAB
2013, I had working code for front-end editing.
The code involve a new component, a new library
file, and two plugins.
Integration involved [1] touching the module’s
XML file (to declare the module’s actions and to
tag which fields belong to which action) and [2]
overriding the module’s layout template (to inject
a couple of simple calls to a couple of library
functions).
This has worked for every module type that I
tried (including the desirable CustomHTML as
well as functional modules like Login or Search).
Considering how much work is handled by the
library and plugins, the integration was relatively
simple. But…
84. Summer 2013
But I have learned that a solution is
valued much more if it can be deployed
without requiring the site developer to
touch code. So…
My current work on this project is to
refactor it into a self-contained solution
that allows one to configure permissions
and inject front-end editing through a
component and with no requirement to
touch code.
85. Summer 2013
I welcome your interest and will make the code
available through the iCueProject website.
iCueProject.com
Please visit
iCueProject.com and
sign up to receive
notices of this and
future projects of iCue.
Extensions will be
distributed through this
site.
86. Agenda : Modules with Permissions and Front-End Editing
Beta testers ???
iCueProject.com
Of course, I’ll be welcoming offers for beta testing.
87. Agenda : Modules with Permissions and Front-End Editing
• Imagine…
• Front-End Editing
• ACL and Permissions
• How Modules are Different
• Actions & Module Settings
• How to Implement
• Demo
Imagine Joomla websites where those charged with maintaining it are able to edit modules on the front-end. Let me show you what it is like, and let me share some of the issues to be aware of as we provide this ability to our clients.
Image how front-end editing of modules should work. In this case, image the manager of a restaurant who has a responsibility to manage the website to keep it up-to-date.
We could give her access to the backend and train her to be a power user on Joomla. But she is mostly concerned with managing the store and the content on the store’s website. She has no need to learn a CMS nor the desire to invest time in that. She knows what content she needs to change, and (in her eyes) the CMS should not get in the way.
Image that she merely logs in to the site and she sees edit buttons on the areas she can edit. If she wants to post a notice about holiday store hours… She clicks “Edit,” enters the text into the well-labeled box, and “saves” the changes. Immediately the this updates the content on the site. Imagine that.
Now imaging the restaurant lists the artists performing in its side room. She wants to change how that information displays on the site.
In this case, she wants to override the default “callout” module. Normally it displays the next event, but the restaurant has a special event coming up in two weeks, and this event should be promoted into the “call out” display, not whatever event happens to be next.
Again, a click of “edit” allows her to see those settings and make the changes she needs.
And perhaps she wants to change some details about how the whole list of upcoming events are displayed. Again, we don’t want to send her to the full-featured backend to navigate to this module and to identify only the fields she needs to change. Instead…
She finds the section on the front-end that she wants to change. She see’s the edit button.
A click of the edit button leads to a pop-up of options that are relevant for her to change on the front-end: how many items to display, what categories to include, what is the end date range, should each item include a link or show its hit count, should the event’s intro text be shown and how many words, etc.
Other staff members have some responsibilities to maintain certain parts of the site. They, too, see the edit button when they log in.
But each staff member sees only the settings that they are allowed to change. In this case, the staff member has access to just three of the eight fields that the manager can change.
In this presentation I will demonstrate front-end editing of modules. I will discuss issues with front-end editing and present my solution.Isn’t this what web managers want? Isn’t this what we should be delivering to our clients?
In my work with the iCue Project I explore the what-ifs about making website management more intuitive to those who manage websites. For instance, here is an example of the simplified role-based backend that I deliver to my web clients. It’s all done in Joomla, and it is tuned to the needs of those who need to manage the website – not a hand-me-down of what the developer needs for building the site.
Here’s the agenda. I already had you imagine what the client experience would be like if we added permissions and front-end editing to modules.
What is the value of Front-End Editing?
What do we mean by “permissions” and how do they fit into Joomla’s ACL?
Modules are different from components. What does this mean for permissions and front-end editing?
Components have actions like “create,” “edit,” and “delete.” For front-end editing of modules, we need to discover and declare an appropriate set of actions per module type. How do we do that?
I have built a system that allows one to create actions, assign permissions, and allow front-end editing of modules. Here I show how to add my code to your modules. This code is still being developed, and I encourage you to sign up at iCueProject.com for updates and access to the code.
A demo of front-end editing of all types of modules – according to various permissions, of course.
Before I continue, a few words… When I have given my “Role-Based ACL” talk I have shown this diagram of the ACL. I show that permissions (shown here in green) are deployed only within components. I state that there is no reason why we can’t use permissions on modules. So I decided to develop this talk to show how it can be done…
As I started to implement permissions on modules I ran into the realization that the Joomla core currently does not anticipate that modules will use permissions nor that modules would offer front-end-editing. As a result, many of the conveniences of implementing permissions and front-end editing on components are not available to modules. That is a strong reason why modules have not been implementing permissions nor front-end-editing.I do not hack the core – I always “extend” the core. So to accomplish the implementation I wanted, I had to write a good amount of extra code. Fortunately, I am able to integrate my extended code with minimal work on your part.
What is the value of Front-End Editing?
[left] We as site builders understand all the details behind Joomla. [right] Our clients and their website managers do not. They see the website as a set of pages and as visual parts upon any given page.
It is not wise to impose our “inside” and technical view of the CMS upon the client and content mangers.
Rather, we should seek to offer our clients content management that matches their mental model of the site. They know how to navigate to a particular page and they know what on that page they want to change. We offer a better user experience if we can give them a way to edit according to their mental model of the site.
We already have front-end editing of components. (Well, of the components that chose to implement front-end editing.)
But try to tell the client that they can front-end edit only one piece on a webpage full of pieces. They want to be able to edit any part of a page – in other words, they want to be able to edit modules from the front end.
This represents my ideal of front-end editing. When a user is logged-in to the front-end, all the parts he/she is able to edit will have some edit button showing. Click on the edit button, and just that bit of information that is relevant will be editable. In this example, the user can edit the phone number, the lead-in text for the category “Entrees,” and the price of each item on this restaurant’s menu. Now that is something that restaurant staff would find helpful, intuitive, and easy-to-do.
A question that I’m not hearing anyone else ask: If we can edit _any_ thing on the front-end, should we make _every_ thing editable on the front-end?I take the cautious position that we should not. I feel that front-end editing helps if that type of content/editing corresponds to the user’s mental model of the site. But a lot of things clearly do not align with the front-end view of web pages. Let’s look at some types of editing and consider whether they are better served by front-end editing or by an “admin” type of screen…
Content and the display of content (through components and modules) beg for front-end editing. As I said, they match the user’s mental model of the website. The user can “see” the item they are editing.
But then there are lists of content items. Through these lists we categorize them, order them, toggled which are featured, search for an item among large lists, and manage which are published/unpublished/archived/trashed. Such tasks don’t really map to the front-end. They demand that the user has a “forest” view of all the items. At best, maybe we can reach a list view from the front-end, but the management of a list will probably work best with a screen similar to what we’ve come to expect.
Some parts of a website are actually web applications. Consider a ecommerce application. One has to manage inventory, pricing, payments, orders, fulfillment, etc. These typically use some sort of dashboard that only a privileged few can access. Each task and workflow doesn’t really correspond to the mental model of a web page.
Structural things like menu item management clearly requires an ”inside” or “backend” perspective. There are consequences to adding or changing structural parts of the website. Does the casual front-end user know what all these are (module assignments and the options for each, page types, access levels, language selection, etc)? What if a change is made that removes the page one is editing? Are we not opening a can-of-worms by allowing casual front-end editors to edit structural details of the site!?
And then there are obvious administrative tasks: ACL, user management, global settings, etc. These are abstract have no obvious mapping to the front-end. Again, you can make these accessible on the front-end, but such management screens probably won’t be tied to the mental model of a website’s front-end.
Clearly the real value of front-end editing comes from editing the visual parts of the front-end. This is because they match the user’s mental model of the website. In contrast, many details really don’t have a connection to this mental model, and if we do create front-end editing of these things, those screens probably won’t look much different from what we are accustomed to now.
What do we mean by “permissions” and how do they fit into Joomla’s ACL?
First. If we have front-end editing, we need to have permissions. We have to know who can edit which modules. And we need to know how much of any given module a person can edit. Before we can implement front-end editing of modules, we _have_ to implement at least some level of permissions.
This is the diagram I use to explain Joomla’s ACL. Notice at the top are the “resources” in Joomla: components, modules, menu items, and plugins.
The rounded box here shows what lies within the ACL system. The ACL controls groups and access levels. But when it comes to permissions, the ACL can only respond as to whether or not a particular user is allowed or denied to perform any given action on a given component. It is the component that has to declare which actions it will recognize. And it is the component’s responsibility to enforce the permission. The ACL cannot force a component to do this nor to do it correctly.
Again, note that currently only components implement permissions. The ACL can’t force modules to implement them. And if we as developers or site implementers want permissions on modules, either the modules need to implement them …or we need to “wrap” them in an implementation that adds and manages permissions.
When we talk of “permissions” in terms of “module,” what do we mean? Let’s look at each of the three perspectives of “module.”
The Module Manager looks at the group of modules. Unfortunately, the closest we currently come to permissions and modules is that the Module Manager has an action to allow a user backend access to all modules or no access to any module. Permission is set on the manager of modules, not on the modules themselves. At this level, what we really want is to be able to declare which modules are accessible to any group of users.
I am currently developing my solution to this. I have extended the Module Manager (using object orientation to extend the code), offering a new version of it without replacing or changing the core Module Manager. In this view, an added column that is available to those who can assign permissions per module.
Click on the icon and you see a list of groups all on one screen. Check the groups that should have access. It’s that simple. Just check a box assign access for a group to any given module.(I do realize that this is not modeled exactly after the inherit/allow/deny scheme of the ACL. I’m experimenting!)
The next thing to consider is “type” versus “instance.” As you can see here, the type of module can have multiple instances. Each instance can differ by its position, by the pages it is on, by access level, by language, and by any/all of the settings within that module. … So we need to think through as to how we apply permissions to modules – what things do we assign by type and what things do we assign to each instance of a module?
After careful thought I have concluded that we should be placing the permission to edit (at least front-end editing) on the instance. It is the instance that has a particular place on the front-end, and thus it is the module’s instance (not its type) that matches the user’s mental model.
Let’s think about how we set this up.First, remember that the ACL provides us the ability to create the groups and then assign users to groups.
Then keep in mind that the component declares a set of “actions” that can be performed upon in. Typically we have the standard list as you see here.
And when we assign permissions… we select a group and set the permission (inherit, allowed, denied) on that component’s action.Now, for modules… Likewise, we will need to declare the actions for each and we will need to store the permission settings.
So this is how I feel it is best to set up modules with permissions. [1] The Module Manager allows us to set access to each module instance. [2] The module type is where we declare the actions that can be taken on the module instance.[3] We declare and enforce permissions upon each module instance.(There might be some value in assigning permissions on the module type – providing default settings. But ultimately, we need to allow permissions to be set independently per instance of a module.)
Modules are different from components. What does this mean for permissions and front-end editing?
Components involve content and write their content straight to a database table dedicated to that component. In contrast, the module stores information about how to display content and then pulls in the content from the component tables. IN CONTRAST… The module is mostly concerned about the view of whatever content they get from the database.
So the component is about the CONTENT. The module is about the DISPLAY of content.This argues that front-end editing of the module should be mostly about the display of its content. Arguably, the editing of a component’s content should belong to the component - not to the module.
You might protest and say that components are also about the display of content. To some extent this is true, but to a larger extent the display within a component’s position is from the menu item, and as with modules, the same component content can be displayed differently by the use of different menu items. So stated again… the component is more about content, and the module (and menu items) are more about the display of that content. These are two different types of concerns.
This has strong implications of the actions we declare. Most components rely upon a core set of actions like configure, create, delete, edit, edit state.
But modules, in contrast to components, are not about content. When it comes to modules, we need to rethink the set of actions we declare. They need to be tuned more to the display of data (not to the management of the data itself). Here are some examples: front-end editing, filtering, display, link settings, advanced (e.g., alternative template to use).Actions for a module are “cut from a different cloth” than are actions for components.
Now that we realize that the actions we declare for modules are most likely different from those of components, we need to think about how we discover the actions that are appropriate for any given module type. How do we approach that task?
We need to remember that we are setting permissions that involve the display of parts on a webpage. We need to think about what the staff person who is performing front-end editing probably wants to accomplish.
We do this staff person no favor by giving them the entire slate of settings that comes with a component. Instead, we give them just the one or few settings that will change the display in ways they want, in ways they can visualize, and in terms they understand.
So the task at hand is [left] to determine which of the module’s settings do we want to make available, and [right] how do we segment them into meaningful actions?
As I reviewed dozens of modules, I recognized four groupings, each seeming to suggest certain actions…
Modules that display a list can have meaningful actions like filtering, grouping, ordering, and count.
And some module types refer to a single item. An action for modules of the “single” type can be the selection of the item, or formatting details about the item.
Some modules exist only to provide a function. These often involve the edit of lead-in text or labels, display issues like the inclusion of a button or the width of a text box, or perhaps some variable within the function (e.g., to which page to send the user after logging in).
And, of course, there is the content-centric module, Custom HTML. It’s all about the content to display, but arguably it can include formatting details to add to the displayed content.
After looking at the types of modules, the next thing to look at are the types of settings within modules. (Shown are the fieldsets for “article categories.”)
Every module has these fields, and *** I don’t think they should be included in front-end editing ***. These fields affect the location and very existence on the front-end. If a front-end editor changes one of these, the module might disappear (either going to a different position, a different page, or be removed altogether). This behavior is no longer intuitive to the front-end user and could cause serious problems. Arguably, if someone needs to change any of these settings, that person should be doing so from a “forest” view such as what we get in the backend.
Filtering types of settings could lead to the same problem – the module might no longer have any items to display and in some cases a module will disappear along with its edit button. But filtering is a valuable feature for front-end editing, and these settings should be included as needed.(My current solution to prevent a module from disappearing is to not save the changes and warn the user that the requested settings would make the module disappear.)
For each item to display, we can set what parts of that item should be displayed.
And for the content pieces to be displayed, we may have formatting options that should be offered.
Functional settings are more abstract, but they should be considered. Should we include links? Should we include a “read more” feature. What is the landing page for those login in or logging out?
And, of course, there is the type of field that edits content. Not content from the component (remember, that is the component’s responsibility), but content that is held by the module. Yes, the html content of the “Custom HTML” module is stored within the module record. So this html/text should be available through the module for front-end editing.
But don’t forget that any type of module can contain “content” that is stored by the module: such as labels and lead-in text. Think of this… we can edit any module’s XML file to add text and text box fields which will add content to the module – and thus allow us to provide front-end editable content to any module!
Every module contains an “Advanced” set of fields. Some of these have questionable value for front-end editing. Others can open up some very interesting possibilities. …Imagine allowing a staff person to change the alternative layout for a module through front-end editing.
So our task… We have to choose which settings on a module we will allow for front-end editing, and to group them into meaningful actions. Shown above is the set of settings for the Article Categories module. It is a sizable list, and our task requires some careful thought.
Perhaps in many cases we create just one simple action that allows front-end editing, and then anyone who has that permission sees the same set for fields.
In some cases we might want to break the module’s fields into multiple actions. This accommodates a rich role-based approach. Each person who can edit will see just those settings that are relevant to his or her role.
However you split up the actions and the settings per action, remember that we provide front-end editing to accommodate the user’s mental model of the site and its content.
My coded solution, and how to implement for any module…
Our clients have real people with real and varied responsibilities for managing the business and the website’s content. Joomla’s ACL allows us to model these “roles” into website management.
At this point during the live presentation I demo front-end editing. Eventually, I will have video demos available through iCueProject.com
If you find my thoughts and approach interesting, please subscribe on the iCueProject website (iCueProject.com). Modules with permissions and front-end editing is just one of the issues being tackled here. The goal, of course, is iCue: Improving the CMS User Experience – though Joomla implementations.