GeoRSS aggregator and Layar augmented reality server
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

115 lignes
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