Additional Info For Some Users - content-management-system

I am looking to add some additional content to users that should be required for users of type X
example: Sales Associate's
require: Profile Picture
just breaking into Orchard, i have done some looking for something like this just no luck so far.
THANK YOU IN ADVANCE

Every user in Orchard is of type User - there is no distinction. So you may approach the problem twofold:
Create your own content types to describe various users. By default there is one type in Orchard that describes a user - "User".
In order to make it work you'd need to write your own version of Orchard.Users module that would take that information into account. It may be quite a bit of work though as you'd need to override any piece of functionality that's there that uses the hardcoded "User" type. Best and cleanest solution, but also the most complex.
Use a single content part attached to "User" type, similar to how the profile modules (eg. Contrib.Profile) work. The distinction between different user types can be done on the driver level. You're free to return different content for a given part, based on some custom logic (eg. the stored value describing "user type"). Lot less flexibility than the first approach (all other parts attached to a user will be shared by everyone), but also lot less coding.

Related

UX and Security - The best way to display the ID of object to user

If you have an experience in UX or Security, please answer this question.
I am working in some project and we need to show the object id to the user.
So all edit form's has the id, the client ask for this --".
My doubt is, what is the best way to show the id in the form?
I did this way, the ID is just a text:
But some one is showing the ID as a disable input, but this seems wrong to me.
Can some tell me the best way to show the ID ? Maybe a third option.
And please explain your answer, I need to convince my team.
Thank's!!!!
An Information Architect here.
I think your first inclination: putting the ID in the visible field as text, is correct - provided the text is selectable.
Do not put text that can't be edited into what looks like an editable field, even if it looks disabled. You're telling the user "you can do SOMETHING to edit this number, but you're not doing it now, and I'm not telling you what you have to do, nor why you'd want to do it, nor what happens if you do". That'd be a really poor approach.
One other thing to think about: does it need to be the first thing in the form? Sure, the ID is probably the first field in the database, but it's probably not of first importance to the user. Order it so it makes sense to her.
Information in the page has a hierarchy, and the top and left of that hierarchy (in languages which read left-to-right) is where the most important thing the user needs to see should live.
(That doesn't mean you can't have a header with a top-left logo or top navigation on the page - of course you can. People understand what that stuff is - we're talking about the top-left of the content area).
If you need more background on information hierarchy, I suggest you search for information on "F-pattern reading" for a quick visual example of how people consume information in the page. The Poynter institute did, I think, the original research on this with an eye-tracking study.
You only show object id and name in the page. If that's all that's there, the page's simplicity means you don't need to think it much further through.
If there's more, you'll need to order the information in a way that's important to your user, and that's natural for completion (for example, an Address has many common components, and completion should occur in the order a user would write the address in the context of the local language).
To understand how well you've done with the page's usability, take your best shot, mock it up, then show it to a few (non-technical, non-project-manager) people. Hand them a pencil, and say "use the pencil as your mouse. Point and click on things to do [name of your task]. Don't tell people how to do it. Just ask them to point at things on a printout. This is called a paper prototype, and can be an inexpensive way to learn a lot about your design. Try this with maybe 5 people before you refine and start to code it up.
I'm not sure what the "Security" aspect is (is it a security product, or an IDM component?). If the question is "Can I show the user the object ID?", you'll have to answer that in the context of your internal security model. You'll need to estimate what you're protecting when the object ID is not shown, what's at risk when it is.
Ideally, your system would prevent a malicious user who knows the object ID from doing anything with the known information, and from harvesting object IDs in bulk.
Of course the correct solution is not to show the ID of an object. IDs (along with object) are internal technical terminology, the user does not care that you use an id to uniquely refer to an object in a database.
Just remove the ID field entirely.

Using the offer object and categories on a schema.org model

I'm currently working on using schema.org for the events database on my site. We don't sell anything, we just try to be able to show all kinds of events (concert, activities for children, art exhibition, etc) some of them are free, some of them are not, and for some we don't even know, and we don't often have precise information on the price(s).
So, my markup is correct according to google's testing tool, but it says I should have an offer object, and I can't seem to know how to put it. In my database, regarding prices I have these fields :
'free', an enumeration ['yes','no','not communicated']
'tariff', an optional free text field, with a price or price range, and general information about prices, like how it's cheaper for young or old people.
From what I saw, when it's free, I can simply put an offer with a price at 0, when it's not I don't have a price, or may be I have it, but something written in my own langage (not a well sorted list of numeric prices), I'm not even talking about when we don't even know if it's free or not.
so my first question is : is it possible to make a schema.org offer with so little information ?
my second problem is about categories, I have categories for my events, like for example, there's an art exhibit showing photographies, so its two categories are 'art exhibit' and 'photography' ('art exhibit' being the main one).
my second question is : how can I use those values to define my events better ? I suppose I must make my categories coincide with schema.org subevents, like musicEvents, or whatever, but I lose a little accuracy there, so I was wondering if there was another way, and I think it's not practical to change the type depending on the categories it fits in.
well, thanks in advance for reading this.
Schema.org does not require any properties, so an Offer without a price is totally fine.
Consumers of the content, on the other hand, might require certain properties/types for whatever they do.
For example, Google lists what is required for showing their Events Rich Snippet. There you can see that having an Offer for an Event (via the offers property) is optional, but if you specify it, price and priceCurrency are required for the Offer.
In general, it’s best to specify as much data as possible, so if it’s an offer but you don’t know the price, use Offer and add all other properties you can provide content for.
However, it might be the case (I don’t know it; if so, it would certainly be a pity!) that Google Search doesn’t show anything at all if you have an Offer without price for an Event, instead of "falling back" to the Event Rich Snippet that doesn’t have an Offer in the first place.

Tool to Support Advanced Search

I am not quite sure how to ask this and if my title is correct. Please edit this question if seen fit.
Redmine has a feature where user can filter certain user defined parameters when performing search:
I would like to know if there is a term for this kind of feature so I can research more regarding this. I'd also like to know if there are existing technologies (i.e. frameworks/cms/plugin) that support this kind of feature. I want to reuse exising technologies if possible and at the same time have this kind of search feature.
My requirements are similar to that of Redmine. That is, instead of Issues, I search Users and the attributes related to that user. The requirements are as follows:
I can add a user, specify the attributes related to this user.
Perform a search on the user and specify the parameters where to the search the user.
My guess is that there is no real term for this, beyond "advanced search"; unfortunately these functions range from simple to mind-bogglingly advanced.

From the two approaches I list, which one is better for CMS page management and why?

Here are the two scenarios:
First one: You have a CMS you log into go to the page manager, select a template, then add a page into the system, edit the page, save it done.
Second one: You sign in, then go to the URL you want to exist but doesn't exist yet but still shows up as a template to enter in stuff. For example, "/articles/article" and since the URLs were mapped to be dynamic, the article template shows up and has the placeholders to edit right there. Different types of pages or templates would be mapped to different URL patterns such as "/product/[product-number]" etc etc.
Is there any security concerns for doing the latter since I like the second one better in terms of programming as there is no management of pages, just authentication then navigating to the desired page. The first one is more structured and is good listing them out or individiual permission settings.
Please advise.
Beyond the authentication considerations, I think both approaches are fine. I see them as ultimately accomplishing the same thing through different user experiences. To answer the question, I would paper prototype each, then pull users into a room and perform a quick / informal usability study, giving them tasks such as "create a page with ..." etc. Evaluate which model performed better. You really should answer this question by including the users that will use the system.

How to implement a search system in a database for an iphone application

This is pretty wide question, but I'm hoping to get a push in the right direction (technologies and methodology).
Ok, I have an iphone app (which I am developing) that works with a web service (c#) through http requests. The web service connects to the underlying database, extracts the necessary data depending on the request and feeds it back to the application.
Now, I need to implement a search system in the app. The user searches for some words, and I need to provide the most relevant results. The search must be performed on different tables in the database. Each table can be searched in a number of columns. For example, when searching through the people table I need to search in the first name, lastname, company, and other fields. Other tables have other important columns.
I have so many questions that I don't even know where to start.
How do I make my sql queries to make the search, but still be fast enough. Do I need to make some extra tables with indexed content somehow?
How should I add relevance factor to the results so I can ultimately filter only the most relevant results? For example, if an user searches for Smith, maybe there is a person named Smith or even a Company. They should be displayed before any other content that can have smith in the description.
I know the question is a little vague/wide but I can explain more if somebody desires.
Thank you
This kind of depends on which language/rdbms you are using on your server. You might checkout various DB search solutions like Sphinx which will do all of that indexing for you and provide a simple Search API. Sphinx for example allows you to prioritize columns, define character mappings (ß->s, ä->a) etc.
In the end I have decided to use Lucene. It's a wonderful piece of technology and even if I had some doubts in the beginning, after reading 3/4 of the book called "Lucene in Action" it was clear to me that it had everything I needed (and much more).
I know it's not a fully-functional searching system (with all the elements needed), but merely a library handling the core of a search system. It will need some work to integrate it with my application/webservice/database. I will let you know how it goes :)
Thanks for your input!