00001 <?php
00020 class SMWEmbeddedResultPrinter extends SMWResultPrinter {
00021
00022 protected $m_showhead;
00023 protected $m_embedformat;
00024
00033 protected function handleParameters( array $params, $outputmode ) {
00034 parent::handleParameters( $params, $outputmode );
00035
00036 $this->m_showhead = !$params['embedonly'];
00037 $this->m_embedformat = $params['embedformat'];
00038 }
00039
00040 public function getName() {
00041 return wfMsg( 'smw_printername_embedded' );
00042 }
00043
00044 protected function getResultText( SMWQueryResult $res, $outputmode ) {
00045 global $wgParser;
00046
00047 if ( $wgParser->getTitle() instanceof Title ) {
00048 $title = $wgParser->getTitle()->getPrefixedText();
00049 } else {
00050 global $wgTitle;
00051 $title = $wgTitle->getPrefixedText();
00052 }
00053
00054
00055 $result = '';
00056 $footer = '';
00057 $embstart = '';
00058 $embend = '';
00059 $headstart = '';
00060 $headend = '';
00061 $this->hasTemplates = true;
00062
00063 switch ( $this->m_embedformat ) {
00064 case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
00065 $headstart = '<' . $this->m_embedformat . '>';
00066 $headend = '</' . $this->m_embedformat . ">\n";
00067 break;
00068 case 'ul': case 'ol':
00069 $result .= '<' . $this->m_embedformat . '>';
00070 $footer = '</' . $this->m_embedformat . '>';
00071 $embstart = '<li>';
00072 $headend = "<br />\n";
00073 $embend = "</li>\n";
00074 break;
00075 }
00076
00077
00078 foreach ( $res->getResults() as $diWikiPage ) {
00079 if ( $diWikiPage instanceof SMWDIWikiPage ) {
00080 $dvWikiPage = SMWDataValueFactory::newDataItemValue( $diWikiPage, null );
00081 $result .= $embstart;
00082
00083 if ( $this->m_showhead ) {
00084 $result .= $headstart . $dvWikiPage->getLongWikiText( $this->mLinker ) . $headend;
00085 }
00086
00087 if ( $dvWikiPage->getLongWikiText() != $title ) {
00088 if ( $diWikiPage->getNamespace() == NS_MAIN ) {
00089 $result .= '{{:' . $diWikiPage->getDBkey() . '}}';
00090 } else {
00091 $result .= '{{' . $dvWikiPage->getLongWikiText() . '}}';
00092 }
00093 } else {
00094 $result .= '<b>' . $dvWikiPage->getLongWikiText() . '</b>';
00095 }
00096
00097 $result .= $embend;
00098 }
00099 }
00100
00101
00102 if ( $this->linkFurtherResults( $res ) ) {
00103 $link = $res->getQueryLink();
00104 if ( $this->getSearchLabel( SMW_OUTPUT_WIKI ) ) {
00105 $link->setCaption( $this->getSearchLabel( SMW_OUTPUT_WIKI ) );
00106 }
00107 $link->setParameter( 'embedded', 'format' );
00108
00109 $format = ( $this->m_embedformat == 'ol' ) ? 'ul':$this->m_embedformat;
00110 $link->setParameter( $format, 'embedformat' );
00111 if ( !$this->m_showhead ) {
00112 $link->setParameter( 'on', 'embedonly' );
00113 }
00114 $result .= $embstart . $link->getText( SMW_OUTPUT_WIKI, $this->mLinker ) . $embend;
00115 }
00116 $result .= $footer;
00117
00118 return $result;
00119 }
00120
00121 public function getParameters() {
00122 $params = parent::getParameters();
00123
00124 $params['embedformat'] = new Parameter( 'embedformat' );
00125 $params['embedformat']->setMessage( 'smw_paramdesc_embedformat' );
00126 $params['embedformat']->setDefault( 'h1' );
00127 $params['embedformat']->addCriteria( new CriterionInArray( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'ul' ) );
00128
00129 $params['embedonly'] = new Parameter( 'embedonly', Parameter::TYPE_BOOLEAN );
00130 $params['embedonly']->setMessage( 'smw_paramdesc_embedonly' );
00131 $params['embedonly']->setDefault( false, false );
00132
00133 return $params;
00134 }
00135
00136 }