Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group phame
|
|
|
|
*/
|
|
|
|
final class PhamePostView extends AphrontView {
|
|
|
|
|
|
|
|
private $post;
|
|
|
|
private $author;
|
|
|
|
private $body;
|
|
|
|
private $skin;
|
2012-10-17 17:36:33 +02:00
|
|
|
private $summary;
|
|
|
|
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
|
|
|
|
public function setSkin(PhameBlogSkin $skin) {
|
|
|
|
$this->skin = $skin;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getSkin() {
|
|
|
|
return $this->skin;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setAuthor(PhabricatorObjectHandle $author) {
|
|
|
|
$this->author = $author;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getAuthor() {
|
|
|
|
return $this->author;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setPost(PhamePost $post) {
|
|
|
|
$this->post = $post;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getPost() {
|
|
|
|
return $this->post;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setBody($body) {
|
|
|
|
$this->body = $body;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getBody() {
|
|
|
|
return $this->body;
|
|
|
|
}
|
|
|
|
|
2012-10-17 17:36:33 +02:00
|
|
|
public function setSummary($summary) {
|
|
|
|
$this->summary = $summary;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getSummary() {
|
|
|
|
return $this->summary;
|
|
|
|
}
|
|
|
|
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
public function renderTitle() {
|
|
|
|
$href = $this->getSkin()->getURI('post/'.$this->getPost()->getPhameTitle());
|
|
|
|
return phutil_render_tag(
|
|
|
|
'h2',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post-title',
|
|
|
|
),
|
2013-01-18 03:43:35 +01:00
|
|
|
phutil_tag(
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
'a',
|
|
|
|
array(
|
|
|
|
'href' => $href,
|
|
|
|
),
|
2013-01-18 03:43:35 +01:00
|
|
|
$this->getPost()->getTitle()));
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function renderDatePublished() {
|
2013-01-18 03:43:35 +01:00
|
|
|
return phutil_tag(
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post-date',
|
|
|
|
),
|
|
|
|
pht(
|
|
|
|
'Published on %s by %s',
|
|
|
|
phabricator_datetime(
|
|
|
|
$this->getPost()->getDatePublished(),
|
2012-12-20 23:48:23 +01:00
|
|
|
$this->getUser()),
|
2013-01-18 03:43:35 +01:00
|
|
|
$this->getAuthor()->getName()));
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function renderBody() {
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post-body',
|
|
|
|
),
|
|
|
|
$this->getBody());
|
|
|
|
}
|
|
|
|
|
2012-10-17 17:36:33 +02:00
|
|
|
public function renderSummary() {
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post-body',
|
|
|
|
),
|
|
|
|
$this->getSummary());
|
|
|
|
}
|
|
|
|
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
public function renderComments() {
|
|
|
|
$post = $this->getPost();
|
|
|
|
|
|
|
|
switch ($post->getCommentsWidget()) {
|
|
|
|
case 'facebook':
|
|
|
|
$comments = $this->renderFacebookComments();
|
|
|
|
break;
|
|
|
|
case 'disqus':
|
|
|
|
$comments = $this->renderDisqusComments();
|
|
|
|
break;
|
|
|
|
case 'none':
|
|
|
|
default:
|
|
|
|
$comments = null;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return $comments;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function render() {
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post',
|
|
|
|
),
|
|
|
|
$this->renderTitle().
|
|
|
|
$this->renderDatePublished().
|
|
|
|
$this->renderBody().
|
|
|
|
$this->renderComments());
|
|
|
|
}
|
|
|
|
|
2012-10-17 17:36:33 +02:00
|
|
|
public function renderWithSummary() {
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-post',
|
|
|
|
),
|
|
|
|
$this->renderTitle().
|
|
|
|
$this->renderDatePublished().
|
2012-10-17 17:37:05 +02:00
|
|
|
$this->renderSummary());
|
2012-10-17 17:36:33 +02:00
|
|
|
}
|
|
|
|
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
private function renderFacebookComments() {
|
|
|
|
$fb_id = PhabricatorEnv::getEnvConfig('facebook.application-id');
|
|
|
|
if (!$fb_id) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2013-01-18 03:57:09 +01:00
|
|
|
$fb_root = phutil_tag('div',
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
array(
|
|
|
|
'id' => 'fb-root',
|
|
|
|
),
|
|
|
|
''
|
|
|
|
);
|
|
|
|
|
|
|
|
$c_uri = '//connect.facebook.net/en_US/all.js#xfbml=1&appId='.$fb_id;
|
|
|
|
$fb_js = jsprintf(
|
|
|
|
'<script>(function(d, s, id) {'.
|
|
|
|
' var js, fjs = d.getElementsByTagName(s)[0];'.
|
|
|
|
' if (d.getElementById(id)) return;'.
|
|
|
|
' js = d.createElement(s); js.id = id;'.
|
|
|
|
' js.src = %s;'.
|
|
|
|
' fjs.parentNode.insertBefore(js, fjs);'.
|
|
|
|
'}(document, \'script\', \'facebook-jssdk\'));</script>',
|
|
|
|
$c_uri
|
|
|
|
);
|
|
|
|
|
2012-10-17 17:37:05 +02:00
|
|
|
|
|
|
|
$uri = $this->getSkin()->getURI('post/'.$this->getPost()->getPhameTitle());
|
|
|
|
|
2013-01-18 03:57:09 +01:00
|
|
|
$fb_comments = phutil_tag('div',
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
array(
|
|
|
|
'class' => 'fb-comments',
|
2012-10-17 17:37:05 +02:00
|
|
|
'data-href' => $uri,
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
'data-num-posts' => 5,
|
|
|
|
),
|
|
|
|
''
|
|
|
|
);
|
|
|
|
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-comments-facebook',
|
|
|
|
),
|
|
|
|
$fb_root.
|
|
|
|
$fb_js.
|
|
|
|
$fb_comments);
|
|
|
|
}
|
|
|
|
|
|
|
|
private function renderDisqusComments() {
|
|
|
|
$disqus_shortname = PhabricatorEnv::getEnvConfig('disqus.shortname');
|
|
|
|
if (!$disqus_shortname) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
$post = $this->getPost();
|
|
|
|
|
2013-01-18 03:39:02 +01:00
|
|
|
$disqus_thread = phutil_tag('div',
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
array(
|
|
|
|
'id' => 'disqus_thread'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
// protip - try some var disqus_developer = 1; action to test locally
|
|
|
|
$disqus_js = jsprintf(
|
|
|
|
'<script>'.
|
|
|
|
' var disqus_shortname = "phabricator";'.
|
|
|
|
' var disqus_identifier = %s;'.
|
|
|
|
' var disqus_url = %s;'.
|
|
|
|
' var disqus_title = %s;'.
|
|
|
|
'(function() {'.
|
|
|
|
' var dsq = document.createElement("script");'.
|
|
|
|
' dsq.type = "text/javascript";'.
|
|
|
|
' dsq.async = true;'.
|
|
|
|
' dsq.src = "http://" + disqus_shortname + ".disqus.com/embed.js";'.
|
|
|
|
'(document.getElementsByTagName("head")[0] ||'.
|
|
|
|
' document.getElementsByTagName("body")[0]).appendChild(dsq);'.
|
|
|
|
'})(); </script>',
|
|
|
|
$post->getPHID(),
|
2012-10-17 17:37:05 +02:00
|
|
|
$this->getSkin()->getURI('post/'.$this->getPost()->getPhameTitle()),
|
Move skins toward modularization
Summary:
Two high-level things happening here:
- We no longer ever need to put meta-UI (content creation, editing, notices, etc.) on live blog views, since this is all in Phame now. I pulled this out.
- On the other hand, I pushed more routing/control logic into Skins and made the root skin a Controller instead of a View. This simplifies some of the code above skins, and the theory behind this is that it gives us greater flexibility to, e.g., put a glue layer between Phame and Wordpress templates or whatever else, and allows skins to handle routing and thus add pages like "About" or "Bio".
- I added a basic skin below the root skin which is more like the old root skin and has standard rendering hooks.
- "Ten Eleven" is a play on the popular (default?) Wordpress themes called "Twenty Ten", "Twenty Eleven" and "Twenty Twelve".
Test Plan: Viewed live blog and live posts. They aren't pretty, but they don't have extraneous resources.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T1373
Differential Revision: https://secure.phabricator.com/D3714
2012-10-17 17:36:25 +02:00
|
|
|
$post->getTitle()
|
|
|
|
);
|
|
|
|
|
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => 'phame-comments-disqus',
|
|
|
|
),
|
|
|
|
$disqus_thread.
|
|
|
|
$disqus_js);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|