Domanda

Voglio scrivere un plugin per redmine che dipenderà un bel paio di , quindi vorrei creare automaticamente i campi personalizzati. Idealmente all'interno del codice del plugin, o, se non da uno script che posso correre quando installo il plugin - davvero non voglio avere a creare oltre 10 campi attraverso l'interfaccia web quando ho creato questo in su, soprattutto quando si è un elenco con un bel paio di valori.

Qualcuno può dirmi se ci sono modi standard di fare questo?

Inoltre è ci un buon modo per esportare i campi personalizzati da un'installazione esistente?

È stato utile?

Soluzione

Si dovrebbe usare la migrazione degli script. Mettete i vostri script in #{PLUGIN_ROOT}/db/migrate e chiamare .create lì. Le fonti Redmine contengono molti script simili.

Ad esempio, lo script può avere un nome:. 001_populate_custom_fields.rb

Contenuto:

class PopulateCustomFields < ActiveRecord::Migration
    def self.up
        CustomField.create ...
    end
    def self.down
    end
end

Altri suggerimenti

I campi personalizzati in sostanza sono praticamente implementate come una risorsa (tuttavia non v'è alcun percorso risorsa per custom_fields). Non vedo una ragione per cui non si dovrebbe essere in grado di utilizzare solo CustomField.create / Nuovo per creare i campi il plugin ha bisogno. Allo stesso modo si dovrebbe essere in grado di utilizzare solo per trovare () per ottenere tutti i campi personalizzati esistenti. Tuttavia, devo dire che non ho mai fatto prima e non so se questo è il modo standard. Ma, al largo della mano, non riesco a vedere nulla di sbagliato nel fare in questo modo.

Come rispose Andriy Lesyuk, inserire lo script sotto #{PLUGIN_ROOT}/db/migrate e testarlo utilizzando il comando per l'installazione / disinstallazione del plugin.

Per l'installazione del plugin utilizzare il comando:

rake redmine:plugins:migrate

e per la disinstallazione:

rake redmine:plugins:migrate NAME=<your plugin name> VERSION=0

Controlla il funzionario per ulteriori dettagli.

Per esempio, la 001_populate_custom_fields.rb script potrebbe essere qualcosa del tipo:

class PopulateCustomFields < ActiveRecord::Migration
  # method called when installing the plugin
  def self.up
    if CustomField.find_by_name('A New Custom Field').nil?
      CustomField.create(name: 'A New Custom Field', field_format: 'text')
    end
  end

  # method called when uninstalling the plugin
  def self.down
    CustomField.find_by_name('A New Custom Field').delete unless CustomField.find_by_name('A New Custom Field').nil?
  end
end

Questo creerà / rimuovere il campo personalizzato "Un Campo New Custom" di tipo "testo", dopo aver controllato la sua esistenza dai custom_fields tabella del database Redmine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top