Page Rules
- Everybody is welcome to edit the page
- Do not change the structure of the page
- Do not change the titles inside html tags h2, h3
- Use the revision log message to explain your additions or updates
- When you make important changes, explain them in a comment here and include a url to your revision at the end of your comment
Page Why
- To make it clear for people who are planing to structure their site on how to relate things to each other
- To help the development of new modules addressing relationships inside Drupal
- // TODO add more
Planing stage of ultimate result: Make it possible to Relate everything to each other in Drupal 7
Facts
- Relations are fundamentally uni-directional
e.g. //TODO add example - Relations are constantly changing through time.
e.g. your relationship with your partner getting better or worse. - Changes in some relations can effect other relations.
e.g changes in your relationship with one woman will affect your relationship with another woman. - Relations are not always true and false. most likely they are somewhere between true and false
e.g. if you relate some of your friends with the word "important", and look at the situation from binary logic, each of your friends are either important or not; but in the real world (Fuzzy logic) of course some of your friends are more important to u. - Relationship can not exist without at least 2 ends.
e.g. there is no such thing as a "performs". Until you have "artist" and "song" on either side of it, "performs" can't even exist. - Self-referencing relationships are valid.
e.g. john->loves->himself. - Relationship add information to its ends.
e.g. relationship "performs" adds information to "artist" and "song". - // TODO add more
Requirements
- Setting up and using Relations must not require any coding by the end user
- Setting up and using Relations must be simple for the end user
- Relations implementation must make maximum use of what we already have in Drupal
- // TODO add more
break down of the ultimate result into smaller results
-
Make it possible to store the relations
- Requirements
- Relations must work with revisions and system must be able to remember how relations changed through time
- Relations must work in multi lingual environments
- Paths
- Use Drupal 7 Fields (Previously called CCK Fields)
Tasks:- Store the relation as CCK fields using multigroups functionality
Pros:
- Multi language functionality will be handled by Drupal
- Revisions will will be handled by Drupal
- // ???
Cons:
- // ???
- // ???
- // TODO add another path
Make it possible for site admins to define possible relations
- Requirements
- Defining Relations must not require any coding by the end user
- Defining Relations must be easy
- Defining Relations must match well with other Drupal settings
- Paths
- Add the possible relations as fields to Drupal 7 Entities, the same way other field are added
Tasks:- // TODO add what needs to be done to achieve the result
Pros:
- // ???
- // ???
Cons:
- // ???
- // ???
- // TODO add another path
Make it possible for end users to create and edit the relations
- Requirements
- Adding or editing Relations must be easy
- Paths
- Use Drupal standard forms for adding or editing relations
Tasks:- // TODO add what needs to be done to achieve the result
Pros:
- // ???
- // ???
- // ???
Cons:
- // ???
- // ???
- // TODO add another path
Make it possible to display the existing relations
- Requirements
- Displaying Relations must be very flexible
- // TODO add other requirements
- Paths
- Use Views to display relations
Tasks:- provide integration with views
- // TODO add what else needs to be done to achieve the result
Pros:
- // ???
- // ???
- // ???
Cons:
- // ???
- // ???
- // TODO add another path
Comments
Facts: + Realationship can
Facts:
+ Realationship can not exist without at least 2 ends.
e.g. there is no such thing as a "performs". Until you have "artist" and "song" on either side of it, "performs" can't even exist.
+ Relationship add information to its ends.
e.g. relationship "performs" adds information to "artist" and "song".
rev: http://groups.drupal.org/node/136079/revisions/288429/view
john->loves->himself. self
john->loves->himself.
self relations are valid.
Facts: +Self-referencing
Facts:
+Self-referencing relationships are valid.
e.g. john->loves->himself.
Rev: http://groups.drupal.org/node/136079/revisions/288994/view
Talk as much as you want
But talk is silver and code is gold and now we are coding and you have two many questions marks even in the talking.
We have code that can create a relationship out of N entities and have an API and a UI for it. There's settings to set up what bundles can a relationship contain although this is not enforced yet (won't be hard to add!). Whether the relation is binary or N-ary, that is also saved and has validation on it. Directionality is coming too.
Going the field route is impossible. If the relation is part of the entity then as you create or delete a relationship you need to save the other endpoint(s) entity. That is not possible. We tried. It's not possible, saving of entities is not defined in Drupal 7 in a generic way. Also, you will face the problem where you have say a million nodes, a 'section' vocabulary with six terms and every node must have a section term. Loading a term entity will try to load all 1E5+ relations? 1E5 nodes as well? That's not a good idea. Very much so. Note to self: don't forget to add a 'load' flag to settings.
The UI is a default and we do expect entity specific version to be born. We have a block that allows picking any entity loaded on a page (even relation entities, lol). Then it remembers the pickings and out of those you can create a relationship.
There's an entity page. The relation will be fieldable.
All this was coded basically the last three days.
We are planing here
Creation consist of two parts, mental creation and physical creation. mental creation is when you plan your creation and physical creation is when you realize ur plan by write the actual code. we are planing here and not merely talking! planing is very important in project management, the science dealing with creation. please note that i am not saying coding is less important, I'm saying these two steps of creation are equally important.
You're talking about yourself
You're talking about yourself in the second person...
Clever ;)
Clever ;)