GeoRSS aggregator and Layar augmented reality server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

115 lines
3.0 KiB

  1. class FeedsController < ApplicationController
  2. before_filter :require_login
  3. # GET /feeds
  4. # GET /feeds.json
  5. def index
  6. @feed = Feed.new
  7. @feeds = Feed.all :order => :title
  8. respond_to do |format|
  9. format.html # index.html.erb
  10. format.json { render json: @feeds }
  11. end
  12. end
  13. # GET /feeds/1
  14. # GET /feeds/1.json
  15. def show
  16. @feed = Feed.find(params[:id])
  17. @posts = @feed.posts.order("published desc").paginate(:page => params[:page], :per_page => 20)
  18. respond_to do |format|
  19. format.html # show.html.erb
  20. format.json { render json: @feed }
  21. end
  22. end
  23. # GET /feeds/new
  24. # GET /feeds/new.json
  25. def new
  26. @feed = Feed.new
  27. respond_to do |format|
  28. format.html # new.html.erb
  29. format.json { render json: @feed }
  30. end
  31. end
  32. # GET /feeds/1/edit
  33. def edit
  34. @feed = Feed.find(params[:id])
  35. end
  36. # POST /feeds
  37. # POST /feeds.json
  38. def create
  39. Rails.logger.debug "Feed URL: %s" % params['feed']['feed_url']
  40. if Feed.where(:feed_url => params['feed']['feed_url']).size == 1 # ensure this test returns the values we expect
  41. Rails.logger.debug "Adding existing feed to a new layer"
  42. @feed = Feed.where(:feed_url => params['feed']['feed_url']).first
  43. @layer = Layer.find(params['feed']['new_layer_id']) # assumes that the specified layer exists
  44. # Attach the existing feed to the specified layer (making sure we only add each one once)
  45. @feed.layers << @layer unless @feed.layers.include?(@layer)
  46. else
  47. # Create a new feed
  48. Rails.logger.debug "Creating a new feed"
  49. @feed = Feed.new(params[:feed])
  50. @layer = Layer.find(params['feed']['new_layer_id']) # assumes that the specified layer exists
  51. @feed.layers << @layer unless @feed.layers.include?(@layer)
  52. end
  53. respond_to do |format|
  54. if @feed.save
  55. format.html { redirect_to @layer, notice: 'Feed added OK' }
  56. format.json { render json: @feed, status: :created, location: @feed }
  57. else
  58. format.html { render action: "new" }
  59. format.json { render json: @feed.errors, status: :unprocessable_entity }
  60. end
  61. end
  62. end
  63. # PUT /feeds/1
  64. # PUT /feeds/1.json
  65. def update
  66. @feed = Feed.find(params[:id])
  67. respond_to do |format|
  68. if @feed.update_attributes(params[:feed])
  69. format.html { redirect_to @feed, notice: 'Feed updated OK' }
  70. format.json { head :no_content }
  71. else
  72. format.html { render action: "edit" }
  73. format.json { render json: @feed.errors, status: :unprocessable_entity }
  74. end
  75. end
  76. end
  77. # DELETE /feeds/1
  78. # DELETE /feeds/1.json
  79. # def destroy
  80. # @feed = Feed.find(params[:id])
  81. # @feed.destroy
  82. #
  83. # respond_to do |format|
  84. # format.html { redirect_to feeds_url, notice: 'Feed deleted OK' }
  85. # format.json { head :no_content }
  86. # end
  87. # end
  88. def fetch
  89. @feed = Feed.find(params[:id])
  90. @feed.fetch
  91. redirect_to :back, notice: 'Feed fetched OK'
  92. end
  93. def fetch_all
  94. Feed.fetch_all
  95. redirect_to :back, notice: 'All feeds fetched OK'
  96. end
  97. end