*/
class QnAPlugin extends MicroAppPlugin
{
+
+ var $oldSaveNew = true;
+
/**
* Set up our tables (question and answer)
*
return true;
}
+ public function newFormAction() {
+ return 'qnanewquestion';
+ }
+
/**
* Map URLs to actions
*
- * @param Net_URL_Mapper $m path-to-action mapper
+ * @param URLMapper $m path-to-action mapper
*
* @return boolean hook value; true means continue processing, false means stop.
*/
- function onRouterInitialized($m)
+ public function onRouterInitialized(URLMapper $m)
{
$UUIDregex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}';
{
$versions[] = array(
'name' => 'QnA',
- 'version' => STATUSNET_VERSION,
+ 'version' => GNUSOCIAL_VERSION,
'author' => 'Zach Copley',
'homepage' => 'http://status.net/wiki/Plugin:QnA',
'description' =>
*
* @return Notice the resulting notice
*/
- function saveNoticeFromActivity($activity, $actor, $options=array())
+ function saveNoticeFromActivity(Activity $activity, Profile $actor, array $options=array())
{
if (count($activity->objects) != 1) {
// TRANS: Exception thrown when there are too many activity objects.
* @return ActivityObject
*/
- function activityObjectFromNotice($notice)
+ function activityObjectFromNotice(Notice $notice)
{
$question = null;
$obj->id = $question->uri;
$obj->type = QnA_Question::OBJECT_TYPE;
$obj->title = $question->title;
- $obj->link = $notice->bestUrl();
+ $obj->link = $notice->getUrl();
// XXX: probably need other stuff here
{
case QnA_Question::OBJECT_TYPE:
$id = (empty($nli->repeat)) ? $nli->notice->id : $nli->repeat->id;
- $class = 'hentry notice question';
+ $class = 'h-entry notice question';
if ($nli->notice->scope != 0 && $nli->notice->scope != 1) {
$class .= ' limited-scope';
}
case QnA_Answer::OBJECT_TYPE:
$id = (empty($nli->repeat)) ? $nli->notice->id : $nli->repeat->id;
- $cls = array('hentry', 'notice', 'answer');
+ $cls = array('h-entry', 'notice', 'answer');
$answer = QnA_Answer::getKV('uri', $nli->notice->uri);
return true;
}
- /**
- * Custom HTML output for our notices
- *
- * @param Notice $notice
- * @param HTMLOutputter $out
- */
- function showNotice($notice, $out)
- {
- switch ($notice->object_type) {
- case QnA_Question::OBJECT_TYPE:
- return $this->showNoticeQuestion($notice, $out);
- case QnA_Answer::OBJECT_TYPE:
- return $this->showNoticeAnswer($notice, $out);
- default:
- throw new Exception(
- // TRANS: Exception thrown when performing an unexpected action on a question.
- // TRANS: %s is the unpexpected object type.
- sprintf(_m('Unexpected type for QnA plugin: %s.'),
- $notice->object_type
- )
- );
- }
- }
-
- function showNoticeQuestion($notice, $out)
- {
- $user = common_current_user();
-
- // @hack we want regular rendering, then just add stuff after that
- $nli = new NoticeListItem($notice, $out);
- $nli->showNotice();
-
- $out->elementStart('div', array('class' => 'entry-content question-description'));
-
- $question = QnA_Question::getByNotice($notice);
-
- if (!empty($question)) {
-
- $form = new QnashowquestionForm($out, $question);
- $form->show();
-
- } else {
- // TRANS: Error message displayed when question data is not present.
- $out->text(_m('Question data is missing.'));
- }
- $out->elementEnd('div');
-
- // @fixme
- $out->elementStart('div', array('class' => 'entry-content'));
- }
-
/**
* Output the HTML for this kind of object in a list
*
$out = $nli->out;
$notice = $nli->notice;
- $this->showNotice($notice, $out);
+ $nli->showNotice($notice, $out);
$nli->showNoticeLink();
$nli->showNoticeSource();
$nli->showNoticeLocation();
- $nli->showContext();
+ $nli->showPermalink();
$nli->showRepeat();
- $out->elementEnd('div');
-
$nli->showNoticeOptions();
if ($notice->object_type == QnA_Question::OBJECT_TYPE) {
$user = common_current_user();
$question = QnA_Question::getByNotice($notice);
- if (!empty($user)) {
+ if (!empty($user) and !empty($question)) {
$profile = $user->getProfile();
$answer = $question->getAnswer($profile);
return false;
}
- function showNoticeAnswer($notice, $out)
- {
- $user = common_current_user();
-
- $answer = QnA_Answer::getByNotice($notice);
- $question = $answer->getQuestion();
-
- $nli = new NoticeListItem($notice, $out);
- $nli->showNotice();
-
- $out->elementStart('div', array('class' => 'entry-content answer-content'));
-
- if (!empty($answer)) {
- $form = new QnashowanswerForm($out, $answer);
- $form->show();
- } else {
- // TRANS: Error message displayed when answer data is not present.
- $out->text(_m('Answer data is missing.'));
- }
-
- $out->elementEnd('div');
-
- // @todo FIXME
- $out->elementStart('div', array('class' => 'entry-content'));
+ function adaptNoticeListItem($nli) {
+ return new QnAListItem($nli);
}
static function shorten($content, $notice)
$ellipsis = _m('…');
$short = mb_substr($content, 0, $max - 1);
$short .= sprintf('<a href="%1$s" rel="more" title="%2$s">%3$s</a>',
- $notice->uri,
+ $notice->getUrl(),
// TRANS: Title for link that is an ellipsis in English.
_m('more...'),
$ellipsis);
*
* @param Notice $notice
*/
- function deleteRelated($notice)
+ function deleteRelated(Notice $notice)
{
switch ($notice->object_type) {
case QnA_Question::OBJECT_TYPE: