/include/AMP/Content/Article/Display/List.php

https://github.com/radicalsuz/amp · PHP · 187 lines · 144 code · 39 blank · 4 comment · 25 complexity · 93e7a71683283f77c163cffb766bb255 MD5 · raw file

  1. <?php
  2. require_once( 'AMP/Display/List.php');
  3. require_once( 'AMP/Content/Article.inc.php');
  4. class AMP_Content_Article_Display_List extends AMP_Display_List {
  5. var $_css_class_container_list = 'main_content';
  6. var $_css_class_title = "listtitle";
  7. var $_css_class_subtitle = "subtitle";
  8. var $_css_class_morelink = "go";
  9. var $_css_class_text = "text";
  10. var $_css_class_date = "bodygreystrong";
  11. var $_css_class_author = "bodygreystrong";
  12. var $_css_class_source = "bodygreystrong";
  13. var $_css_class_image = "list_image";
  14. var $_css_class_description_block = "list_description";
  15. var $_list_image_class = AMP_IMAGE_CLASS_THUMB;
  16. var $_thumb_attr = array(
  17. 'vspace' => 2,
  18. 'hspace' => 4,
  19. 'class' => 'imgpad' );
  20. var $_base_object;
  21. var $_source_object = 'Article';
  22. var $_pager_active = true;
  23. var $_sort_sql_default = 'default';
  24. var $_sort_sql_translations = array(
  25. 'default' => "if(isnull(pageorder) or pageorder='', 9999999999, pageorder) ASC, date DESC, id DESC"
  26. );
  27. var $_class_pager = 'AMP_Display_Pager_Content';
  28. var $_path_pager = 'AMP/Display/Pager/Content.php';
  29. function AMP_Content_Article_Display_List( $source = false, $criteria = array( )) {
  30. $this->__construct( $source, $criteria );
  31. }
  32. function __construct( $source, $criteria = array( )) {
  33. if (is_object($source)){
  34. $this->_base_object = $source;
  35. if ( method_exists( $source, 'getListItemLimit' )) {
  36. $limit = $source->getListItemLimit();
  37. if ($limit) $this->_pager_limit = $limit;
  38. }
  39. }
  40. return parent::__construct( false , $criteria);
  41. }
  42. function _after_init( ) {
  43. $this->_init_thumbnail_attributes( );
  44. }
  45. function _renderItem( &$source ) {
  46. $text =
  47. $this->render_title( $source )
  48. . $this->render_source( $source )
  49. . $this->render_date( $source )
  50. . $this->render_blurb( $source );
  51. $media =
  52. $this->render_media( $source );
  53. if ( !$media ) {
  54. $media = $this->render_image( $source );
  55. }
  56. $output = $this->render_item_layout( $source, $text, $media );
  57. return $output;
  58. }
  59. function render_item_layout( &$source, $text, $media ) {
  60. return $this->_renderer->div( $media , array( 'class' => $this->_css_class_image ))
  61. . $this->_renderer->div( $text, array( 'class' => $this->_css_class_description_block ));
  62. }
  63. function render_title( &$source ) {
  64. //return $this->_renderer->link( $source->getURL( ), $source->getName( ), array( 'class' => $this->_css_class_title ))
  65. return $this->_renderer->div(
  66. $this->_renderer->link( $source->getURL( ), $source->getName( )),
  67. array( 'class' => $this->_css_class_title ));
  68. }
  69. function render_date( &$source ) {
  70. $date = $source->getItemDate( );
  71. if (!$date) return false;
  72. return $this->_renderer->span( DoDate( $date, AMP_CONTENT_DATE_FORMAT), $this->_css_class_date ) . $this->_renderer->newline();
  73. }
  74. function render_source( &$item ) {
  75. $author = $item->getAuthor( );
  76. $source = $item->getSource( );
  77. $url = $item->getSourceURL( );
  78. if (!(trim($author) || $source || $url)) return false;
  79. if (trim($author)) {
  80. $output_author = $this->_renderer->span( 'by&nbsp;' . converttext($author), $this->_css_class_author );
  81. if (!$source) return $output_author . $this->_renderer->newline();
  82. }
  83. if ($source) $output_source = $this->_renderer->span( $this->link( $url, $source ), $this->_css_class_source );
  84. if ($output_author && $output_source) return $output_author . ',&nbsp;' . $output_source . $this->_renderer->newline();
  85. return $output_source . $this->_renderer->newline();
  86. }
  87. function render_blurb( &$source ) {
  88. $blurb = $source->getBlurb( );
  89. if (!trim( $blurb )) return false;
  90. return $this->_renderer->span( AMP_trimText( $blurb, AMP_CONTENT_ARTICLE_BLURB_LENGTH_MAX ) , $this->_css_class_text ) ;
  91. }
  92. function render_image( &$source ) {
  93. if ( !method_exists( $source, 'getImageRef')) return false;
  94. $image = $source->getImageRef( );
  95. if ( !$image ) return false;
  96. return $this->_renderer->image( AMP_image_url( $image->getName( ), $this->_list_image_class ), $this->_thumb_attr ) ;
  97. }
  98. function render_media( &$source ) {
  99. //eventually this should return a youtube thumbnail
  100. return false;
  101. }
  102. function _init_thumbnail_attributes( ) {
  103. if ( AMP_IMAGE_CLASS_THUMB == $this->_list_image_class ){
  104. $reg = &AMP_Registry::instance();
  105. if ($thumb_attr = $reg->getEntry( AMP_REGISTRY_CONTENT_IMAGE_THUMB_ATTRIBUTES )) {
  106. $this->_thumb_attr = array_merge( $this->_thumb_attr, $thumb_attr );
  107. }
  108. }
  109. }
  110. function addFilter( $filter_name, $filter_var = null ) {
  111. trigger_error( AMP_TEXT_ERROR_NOT_DEFINED , get_class( $this), 'addFilter' );
  112. return;
  113. }
  114. function setPageLimit( $limit ) {
  115. $this->_pager_limit = $limit;
  116. }
  117. function allResultsRequested( ) {
  118. if ( !$this->_pager_active ) return false;
  119. if ( isset( $this->_pager ) ) return $this->_pager->view_all( );
  120. }
  121. function isFirstPage( ) {
  122. return true;
  123. }
  124. function _render_column_header( ) {
  125. return "<a name=column_top></a>";
  126. }
  127. function _render_column_footer( ) {
  128. static $arrow_link = '';
  129. if ( $this->is_last_column( ) ) return;
  130. if ( $arrow_link ) return $arrow_link;
  131. if ( AMP_ICON_COLUMN_FOOTER ) {
  132. require_once( "AMP/Content/Image.inc.php");
  133. #$image = new Content_Image( AMP_ICON_COLUMN_FOOTER );
  134. $icon_value = $this->_renderer->image(
  135. AMP_image_url( AMP_ICON_COLUMN_FOOTER, AMP_IMAGE_CLASS_ORIGINAL ),
  136. #$image->getURL( AMP_IMAGE_CLASS_ORIGINAL ),
  137. array( 'align' => 'right', 'border' => '0'));
  138. } else {
  139. $icon_value = '&uarr;';
  140. }
  141. $arrow_link = $this->_renderer->newline( )
  142. . $this->_renderer->link( AMP_Url_AddAnchor( $_SERVER['REQUEST_URI'], 'column_top' ) ,
  143. $icon_value,
  144. array( 'alt' => 'Next Column', 'border' => 0, 'style' => 'float:right;' ));
  145. return $arrow_link;
  146. }
  147. }
  148. ?>