SharePoint 2010: Advanced filtering on Managed Metadata field - sharepoint-2010

I'm implementing a document management site on SharePoint 2010. Each document that is stored on the site, is tagged with one or more geographical locations indicating what the content of the document is about. I have implemented this using a Managed Metadata field that is bound to a term set in the term store containing all possible locations. The locations are organized hierarchically, so let’s say first by country, then by region, city etc.
I want to be able to quickly locate documents in a document library for a given location. SharePoint 2010 offers 3 out-of-the-box ways to accomplish this: (1) filtering on the column header, (2) using metadata navigation, and (3) using key filters.
So far, so good. Now this is where things are getting tricky. Each location in the term store is identified by a number of different labels. So each location has a default label and an average of 3 or 4 additional labels (synonyms). For example: a location could be referred to as “Amsterdam”, “S-123” and “W-456”.
I want to be able to:
Filter the document library by using any of the labels including the
synonyms
Include all locations that are below the location that he/she
specifies, in short: to recursively set the filter
Going back to the 3 out-of-the-box options:
Filtering on the column header; does NOT support use of synonyms and
does NOT support recursive filtering
Using metadata navigation; does NOT support use of synonyms but does
support recursive filtering
Using key filters; does support use of synonyms but does NOT support
recursive filtering
Can you think of a creative solution that meets my requirements using the out-of-the-box controls? And if not, what options do I have for full customization (custom filter web part, extending out-of-the-box web parts etc.)?
Hope to hear from you!
Regards,
Erik

I think I might have an answer. This works in our System - SharePoint 2010.
In you SharePoint instance, create your View of the list, but don't define any Filters. Save the View.
Open SharePoint Designer 2010 and navigate to the list and view.
In Design view, you then need to select the "WebPartPages:XsltListViewWebPart" (you may need to click one on the column headings to get the grey page elements to appear).
At the top of the screen, select the Options Ribbon tab, a green List View Tools upper-tab appears.
On this ribbon, far left, select Filter.
Define you filters.
It is tricky and not a smooth UI. Note the Group button allowing you to create groups of AND and OR elements. (I'd post an image here of the UI, but I no not have the experience points yet.)
Good Luck.

Related

Is it possible to restrict part of an Ektron smart form to a specific user group?

Is it possible to restrict part of a smart to only a certain user group and if the user trying to edit the smart form content is not of that group, then the user cannot change that portion of the content?
Example:
Let's say I have an Employee smart form with fields for EmployeeBio, EmployeeHireDate, and EmployeeDept. Would it be possible to allow the general author user group to be able to edit the EmployeeBio field, but restrict the EmployeeDept and EmployeeHireDate fields to only an HRAdmin user group?
If it helps, I am using Ektron 9.00 SP3.
As far as I know, you either can edit a content block or you can't; there isn't a way to subdivide permissions on a per-smartform-field basis.
What you can do, is group the "restricted" fields into their own smartform, and then reference that via a content resource selector field.
So your Employee smart form might look like this:
/root/txtName (not in your example, I know...)
/root/rtfBio
/root/cresHRID
Side note: I'm using hungarian notation on my field names here. txt indicates a plain text field, rtf indicates a rich text (html) field, and cres indicates a content resource selector.
Then you could have a second smart form... let's call it "EmployeeHR", and it would have the following structure:
/root/hireDate
/root/txtDepartment
That would, in theory, work. However, I must say that I really don't like splitting up this particular type of data in this way. First, department feels like it would function better as a taxonomy to which you could add the content block. Second, it feels like this type of data would be better served by housing it outside of ektron and then using a DxH (Digital Experience Hub) connector to bring the data into Ektron. This way the external system could handle permissions at a more granular level, and you would still have access to the data within Ektron for use elsewhere within the site.
UPDATE
As I ponder this question some more, another option comes to mind. You could write an ASPX page or UserControl that checks to make sure you're logged in and a member of a particular group before presenting you with a custom edit screen. The following code will check if the current user is a member of the admin group; you can swap out a different group id to fit your needs:
// Not sure off hand which of these using statements provides access to EkConstants...
using Ektron.Cms;
using Ektron.Cms.Common;
using Ektron.Cms.Content;
var userGroupApi = new Ektron.Cms.Framework.User.UserGroupManager();
var isInGroup = userGroupApi.IsUserInGroup(currentUserId, EkConstants.g_AdminGroup);
This could be implemented as an ASPX page on your site, or it could be implemented as a widget and placed on the user's Smart Desktop tab of the workarea. Either way, you have a lot of options for getting what you want, just nothing "out of the box".

What's the optimal way to filter a set of entities in a lookup?

I've got a lookup field on Account entity called something. Each such Something has a reference to an account. When my users click the magnifying glass, I want them to see a list of available Something records but filtered to view only such instances that link to the currently treated entity.
Also, I'll need to design such a filtration for Contact instances to only show the Something records that are related to the account that the currently regarded contact is a member of.
I can't decide between a plugin on Retrieve and some JS in OnLoad registering a fetchXML. All such operations will be done client-side. The solution needs only to work in CRM13 (and if possible apply some cool functionality in that version).
Suggestions?
JavaScript & FetchXml are your best option here as with a Retrieve plugin you're taking the performance hit of executing on every retrieve regardless of whether the entity is being retrieved for the lookup. A filtered lookup in JS only applies for those scenarios that require a change to the field on Account.
Another other good reason for using a filtered lookup in Js is they are now a supported feature in CRM 2013 as opposed to the "hack" that was required in 2011.
Some more info on addPreSearch and addCustomFilter can be found on MSDN and there's a decent blog post providing examples here.

How to show selective templates in the rule group?

Is there any way to show only selective templates corresponding to the rule group ?
For Ex. - I have to rule-groups (MobilePages & WebSearchPages), when I go to create a new landing page templates for mobile are also available in template selection for WebSearchPages And similarly templates created for the use in full-site are available in group for MobilePages.
Is there any way to avoid this, or offer only selective templates for pages corresponding to the rule-group ?
In templates I can only specify the entry of Zone & Page-style but not for rule-group -
<ContentTemplate xmlns="http://endeca.com/schema/content-template/2008" type="PageTemplate" id="MobileSubCategoryPage">
<RuleInfo zone="MobileCategoryPageZone" style="PageStyle"/>
Thanks in advance !
To the best of my knowledge you cannot restrict which types of rules are placed into specific groups.
I have sought such functionality as well. You would think that with group level permissions one would be able to control what goes into the groups as well.
This has likely changed substantially with the move to experience manager that does not have the same group concepts.

Structured data in Joomla

I'm currently developing a back-end for chefs at various restaurants to report their daily menues in a structured format. Of pragmatic reasons have I chosen to use a web CMS and use many of the features already include including a flexible rights-management module
I want to utilise the existing functions in Joomla for access control, editing and navigation, but I need to replace the textfield with five field (each representing one day of the working week) and save this in a structured way into the database. I was planning to create a editor plugin which displays the field for the chef-users and parse the in-data into a structured data-format e.g. XML. For each week I will need to create empty templates for all the restaurants displaying the week number and dates.
I was also hoping for third-party developers to access this data through RESTful methods in the URL where the structure could be something like: http://domain.no/restaurant-name/menu for a text-menu http://domain.no/restaurant-name/json for json etc.
I guess my question is how I can start developing such features. Has there been developed anything similar and are there modules developed for Joomla which I can utilise? Does my approach sounds sensible or are there any other good way of solving my problem?
For a custom content management i would use Zoo component from Yootheme (not free!). You can define your fields,
But for developers access, i have no idea, sorry!

Content Permissions in Orchard

In an OrchardCms site, I need to create a hierarchical menu where I can show and hide menu items by user role. What is the best way to approach this?
One possible way would be to create and manage two menu's, each pertaining to a different layer where the layer rule species the respective Role. However, this means managing two Menu's which is not ideal. Many items in each menu would need to be duplicated.
Another way would be to create a custom Menu Part. The downside here is it seems like overkill.
Or am I on the wrong track completely, should I be looking more at filtering content items by role instead? In this scenario, I believe I would still need a way to specify menu filters.
I think Advanced Menu (available from the gallery) does menu trimming based on permissions.
Update: my bad. Try Quanta instead (part of the Science project). Should work well with Cartography.
I was able to create multiple menus filtered by role in layers with this simple PCG.RoleLayer module. You will still have to make separate menus though, and it doesn't restrict url access unless you change permissions.
After enabling the module, you can create rules for roles. For example,
role("Administrator")
Would make that layer only visible to those with the administrator role.