# -*- encoding : utf-8 -*- class Card def self.gimme! name, args={} Card::Auth.as_bot do c = Card.fetch(name, new: args) c.putty args Card.fetch name end end def putty args={} Card::Auth.as_bot do if args.present? update! args else save! end end end end class AddScriptCards < Cardio::Migration::Core def up # JavaScript and CoffeeScript types card = Card.fetch "CoffeeScript", new: {} card.codename = :coffee_script card.type_id = Card::CardtypeID card.save! card = Card.fetch "JavaScript", new: {} card.codename = :java_script card.type_id = Card::CardtypeID card.save! # Card.create! name: 'JavaScript', codename: :java_script, type_id: Card::CardtypeID # Card.create! name: 'CoffeeScript', codename: :coffee_script, type_id: Card::CardtypeID # Permissions for JavaScript and CoffeeScript types # ( the same as for CSS and SCSS) %w[JavaScript CoffeeScript].each do |type| %i[create update delete].each do |action| Card.gimme!("#{type}+#{Card[:type].name}+#{Card[action].name}", content: "[[#{Card[:administrator].name}]]") end end # +*script rules Card.create! name: "*script", codename: :script, type_id: Card::SettingID script_set = "*script+#{Card[:right].name}" Card.create! name: "#{script_set}+#{Card[:default].name}", type_id: Card::PointerID Card.create! name: "#{script_set}+#{Card[:read].name}", content: "[[#{Card[:anyone].name}]]" Card.create! name: "#{script_set}+#{Card[:options].name}", content: %( {"type":["in", "JavaScript", "CoffeeScript"] }), type: Card::SearchTypeID Card.create! name: "#{script_set}+#{Card[:input].name}", content: "list" Card.create! name: "#{script_set}+#{Card[:help].name}", content: %{ JavaScript (or CoffeeScript) for card's page. } # TODO: help link? # Machine inputs and outputs default_rule_ending = "#{Card[:right].name}+#{Card[:default].name}" Card.create! name: "*machine output", codename: :machine_output Card.create! name: "*machine output+#{default_rule_ending}", type_id: Card::FileID Card.create! name: "*machine output+#{Card[:right].name}+#{Card[:read].name}", content: "_left" Card.create! name: "*machine input", codename: :machine_input Card.create! name: "*machine input+#{default_rule_ending}", type_id: Card::PointerID # create default script rule card_type = { "js" => "java_script", "coffee" => "coffee_script" } scripts = %w[jquery tinymce slot card_menu jquery_helper html5shiv_printshiv] types = %w[js js coffee js js js] # jquery.mobile (in jquery_helper) must be after card to avoid mobileinit nastiness cardnames = scripts.map { |name| "script: #{name.tr('_', ' ')}" } scripts.each_with_index do |name, index| Card.create! name: cardnames[index], type: card_type[types[index]], codename: "script_#{name}" end cardnames.pop # html5shiv_printshiv not in default list, only used for IE9 (handled in head.rb) Card::Cache.reset_all Card.create! name: "#{Card[:all].name}+*script", content: cardnames.map { |name| "[[#{name}]]" }.join("\n") end end