{"action":"created","issue":{"url":"https://api.github.com/repos/cargomedia/cm/issues/2486","repository_url":"https://api.github.com/repos/cargomedia/cm","labels_url":"https://api.github.com/repos/cargomedia/cm/issues/2486/labels{/name}","comments_url":"https://api.github.com/repos/cargomedia/cm/issues/2486/comments","events_url":"https://api.github.com/repos/cargomedia/cm/issues/2486/events","html_url":"https://github.com/cargomedia/cm/issues/2486","id":199021090,"number":2486,"title":"Class for representing a link target (URL)","user":{"login":"njam","id":360800,"avatar_url":"https://avatars.githubusercontent.com/u/360800?v=3","gravatar_id":"","url":"https://api.github.com/users/njam","html_url":"https://github.com/njam","followers_url":"https://api.github.com/users/njam/followers","following_url":"https://api.github.com/users/njam/following{/other_user}","gists_url":"https://api.github.com/users/njam/gists{/gist_id}","starred_url":"https://api.github.com/users/njam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/njam/subscriptions","organizations_url":"https://api.github.com/users/njam/orgs","repos_url":"https://api.github.com/users/njam/repos","events_url":"https://api.github.com/users/njam/events{/privacy}","received_events_url":"https://api.github.com/users/njam/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"zazabe","id":401598,"avatar_url":"https://avatars.githubusercontent.com/u/401598?v=3","gravatar_id":"","url":"https://api.github.com/users/zazabe","html_url":"https://github.com/zazabe","followers_url":"https://api.github.com/users/zazabe/followers","following_url":"https://api.github.com/users/zazabe/following{/other_user}","gists_url":"https://api.github.com/users/zazabe/gists{/gist_id}","starred_url":"https://api.github.com/users/zazabe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zazabe/subscriptions","organizations_url":"https://api.github.com/users/zazabe/orgs","repos_url":"https://api.github.com/users/zazabe/repos","events_url":"https://api.github.com/users/zazabe/events{/privacy}","received_events_url":"https://api.github.com/users/zazabe/received_events","type":"User","site_admin":false},"assignees":[{"login":"zazabe","id":401598,"avatar_url":"https://avatars.githubusercontent.com/u/401598?v=3","gravatar_id":"","url":"https://api.github.com/users/zazabe","html_url":"https://github.com/zazabe","followers_url":"https://api.github.com/users/zazabe/followers","following_url":"https://api.github.com/users/zazabe/following{/other_user}","gists_url":"https://api.github.com/users/zazabe/gists{/gist_id}","starred_url":"https://api.github.com/users/zazabe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zazabe/subscriptions","organizations_url":"https://api.github.com/users/zazabe/orgs","repos_url":"https://api.github.com/users/zazabe/repos","events_url":"https://api.github.com/users/zazabe/events{/privacy}","received_events_url":"https://api.github.com/users/zazabe/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2017-01-05T18:07:40Z","updated_at":"2017-01-10T10:49:25Z","closed_at":null,"body":"There are differently \"complete\" representations of a URL:\r\n- A: **Absolute URL**. Can be used directly.\r\n- B: **Relative URL**: e.g. `/example`. Only in combination with a *Render* it can become a full URL. It can be passed to the client, and the client can convert it to a full URL.\r\n- C: **Page Classname**: e.g. `CM_Page_Example`. Only in combination with a *Render* it can become a full URL.\r\n\r\nEach of these representations can optionally include *parameters*.\r\n\r\nUsages of such URL representations include:\r\n- smarty_function_linkUrl(): param `page` is a *page classname*, param `params` is URL params\r\n- CM_Page_Abstract::getPath(): returns a *relative URL*\r\n- CM_MenuEntry: option `page` Is a *page classname*, option `params` is URL params\r\n- CM_Http_Response_Page::redirect: *page classname* and URL params\r\n- CM_Http_Response_Page::redirectUrl: *absolute URL*\r\n\r\nI think it would make sense to wrap the representation of such URLs into an object, so we **can pass it along as one variable**.\r\n\r\nI'm not sure all the different use cases should be wrapped into a single class. Case A) and B) are generic use cases (and already covered to some extent in `CM_Http_UrlParser`), while C) is specific to our framework. Nevertheless it would be nice if there was one type that could be passed along that represents either of the three options.\r\n\r\n@dlondero @tomaszdurka @zazabe wdyt?"},"comment":{"url":"https://api.github.com/repos/cargomedia/cm/issues/comments/271544627","html_url":"https://github.com/cargomedia/cm/issues/2486#issuecomment-271544627","issue_url":"https://api.github.com/repos/cargomedia/cm/issues/2486","id":271544627,"user":{"login":"zazabe","id":401598,"avatar_url":"https://avatars.githubusercontent.com/u/401598?v=3","gravatar_id":"","url":"https://api.github.com/users/zazabe","html_url":"https://github.com/zazabe","followers_url":"https://api.github.com/users/zazabe/followers","following_url":"https://api.github.com/users/zazabe/following{/other_user}","gists_url":"https://api.github.com/users/zazabe/gists{/gist_id}","starred_url":"https://api.github.com/users/zazabe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zazabe/subscriptions","organizations_url":"https://api.github.com/users/zazabe/orgs","repos_url":"https://api.github.com/users/zazabe/repos","events_url":"https://api.github.com/users/zazabe/events{/privacy}","received_events_url":"https://api.github.com/users/zazabe/received_events","type":"User","site_admin":false},"created_at":"2017-01-10T10:49:25Z","updated_at":"2017-01-10T10:49:25Z","body":"Draft version with [league/uri](https://packagist.org/packages/league/uri) : https://github.com/cargomedia/cm/pull/2491"}}
{"actor":{"display_login":"zazabe"}}