XPages computed custom control with custom properties - xpages

I found this blog post which defines how to compute your custom control, which is a great solution, but how do I pass custom properties for this custom control using the include tag:
http://www.jmackey.net/groupwareinc/johnblog/johnblog.nsf/d6plinks/XPages-How-to-Compute-a-Custom-Control-at-Runtime

There's now a dynamic view custom control in the ext. library. That might be a good solution for you.

Related

Advantages of using custom classes in custom modules

Introduction
I'm designing an application using Kentico 11 CMS. Client provided me with this information:
Big data are expected
Versioning and workflow would be nice to have but are not mandatory
Editing interface for the data is needed
My research
Based on Kentico out of the box capabilities, I had to decide whether to use Pages, Module classes or Custom tables to store data. I've excluded Pages as they are not advised for big data by docs. After some additional reserach I consider Custom module to be the best option for me.
Documentation states that:
Custom modules: Workflow cannot be used for your data. Versioning of the stored data is not supported by default.
Question
1) Am I able to easily bypass this restriction when using custom classes for the custom module? (meaning versioning and workflow)
2) Is there any collision when defining an interface for editing the data, while using custom classes in custom modules?
3) When defining general indexes for searching will there be any problem when using custom classes in custom modules?
You can setup versioning (https://devnet.kentico.com/articles/module-development-versioning-recycle-bin), not workflow. If you need workflow just for publishing, first you can use pages appliaction, then after page is published move the content to custom class.
You can use default UI from Kentico or you can create your own.
I don't think so, but you can create always custom index if will be something wrong with general

What is the Recommended Approach for Hosting Transformations when creating a Custom Module?

In Kentico 11, in a custom module you are developing, when using a custom Page Template (portal mode) for the UI Element, where is the appropriate place to host Transformations used by web parts of that template? "Appropriate" meaning the transformations can be bundled with the module for import/export operations or at least grouped with it logically in Kentico admin?
The Kentico Custom Module app doesn't contain a Transformations tab for its Classes.
Repeater web parts used on the UI page template only list Custom Tables and Page Types when looking for transformations. Transformation doesn't seem to be supported for a Custom Class.
I could create a standalone container Page Type to host all transformations for the module, however this would be outside the module. These transformations would use data from Classes in the module (through repeater web parts and query data sources for example). It seems odd to put them outside so I am suspicious of doing this.
Up until now I've only used the out-of-box tab and listing web parts to create custom modules. Now I need to get into more customization, and prefer the portal mode to easily build templates using web parts. Transformations seem to be the missing consideration in this development flow.
Neither can I find Transformations mentioned in the Custom Module documentation. Kentico Documentation I'm referencing is:
Creating custom modules
Manually creating the interface for custom modules
Martin Hejtmanek's Module development articles like this one
I can find a place to put my transformations. I'm looking for thoughts about where to best put them and bundle them with my custom module work.
Your findings are a shortcoming in the module documentation. The documentation talks in great detail on how to build the module and display it within the Kentico UI but talks little to none on how to display that content outside of Kentico on the public facing website.
What you mentioned, using a custom Page Type as a container is a simple easy approach and I believe you can bundle this with your module. Yes it doesn't make sense but using this approach will allow you to have your custom queries to access the module data and display options (transformations).
You have another option to create custom webparts for this and package them with your module but I'd recommend against this because it takes away from the basic usage of Kentico and will require code maintenance and modifications for simple changes.
If you look at page types you will see that Kentico does the custom page types to hold transformations. They have ones like RSS Transformations, E-Commerce Transformations, etc.
That is the way I have always done it also.
I suggest you to take a look at the custom table module as example, i.e. user interface part of it: there is transformation menu item under edit custom table in the interface. Take a look on how it is done and try to clone/modify it for your own custom module. If you check the DB: cms_transformation table has TransformationClassID field. So transformation is attachable to a class - so you custom classes can have transformations attached. Honestly i've never done it, but this is the way how I would approach. I would keep apples with apples, oranges with oranges... yeah sure you can always create "container page type" and it will work, but i would play around with the custom module. You might need to create and extender in this case.
#John,
As per Brenden post, you can achieve this using custom web part with your custom logic.
Refer below URL:
https://docs.kentico.com/k10/developing-websites/defining-website-content-structure

How to add paging in CMSRepeater from code side in kentico

I want to add a paging control on my custom web-part so I can customize the paging style. I am using a CMSRepeater for binding the data. Thanks
If you are using CMSRepeater you can try to add UniPager to it. This control is easy customizable. Please see this link: https://docs.kentico.com/k9/references/kentico-controls/generic-controls/paging-controls/unipager
You don't need to create a custom webpart to setup different styling for paging. Simply add a repeater to a page template and add the Universal Pager webpart to the page. In the Universal Pager webpart set the Web part control ID in the target control name from the repeater you want to hook it up to. Then in the Universal Pager webpart define your transformations. Again, no need for a custom webpart for this, just use 2 already created webparts together.

Liferay: Page to portlet mapping

I have a requirement in liferay portal to allow user to add some specific portlets on a particular page. Same can be done in 2 ways:
This will require some custom code to be plugged in add panel code
create a custom portlet which will be present on left hand
side of page and allows portlet to be added and dragged on page.
On add of portlet it checks if the page can have this portlet and accordingly remove it
The question I have is which of these 2 approaches shall be used, and how?
Note: I was unable to find much about this on google as well
I believe Liferay permission system is strong enough to express what you need.
The portlet list shown in "Add more portlets" menu can be customized through a Regular Role. See How to customize which portlets to show in “Add more portlets” menu for detailed info.
To restrict the options for a single page (or several pages), modify its permissions, so that only the new Regular Role is be able to update it.
Based on your comment to Tomáš Piňos's answer, my suggestion would be to create a custom portlet that uses Liferay's API and enables you to do just this: On the page where it's available, use it to enable/disable the portlets you'd like to be there by use of Liferay's API. You'll find quite a lot of sample when you're looking for the old sevencogs example (that sadly does not compile any more, but in general the API has only changed marginally). The most up to date resources with further links to the ancient code are these 2 blog articles.
About your third option (as you ask in the comments): Yes, it's possible: You can override Liferay's Services as well as react to model changes. This means that you could add your own check on updates. However, I'd feel it inappropriate to offer the option to add any portlet only to prohibit it whenever a user indeed uses the offered option. That's why I didn't include this option in my initial answer.

Using custom control from another database

I need to use a custom control which is a simple navigation bar from another database
navigation bar is made with twitter bootstrap css framework,
why do I need to use a custom control from another database?
because this navigation bar is going to be common to four notes Databases,
how can I implement this more efficiently?, a control that is common to four databases
Domino includes template inheritance features that allow either an entire application or a specific design element (like a Custom Control) to be updated whenever the template design changes. You could link the shared Custom Control in each of your four applications to a common template so that, if you need to make changes to it, you only have to change it in one place. You can not reference a Custom Control that only exists in another application; you'd have to store it in each and link the design to keep it synchronized.
Alternatively, you can use the Extensibility API to convert it to a library component. Controls of this kind can be used in any application running on a server that has the library installed. A video tutorial for this process can be found here.

Resources