I'm looking for a part-time remote job.

Hire me


I'm the author of:

Mastering Redmine is a comprehensive guide with tips, tricks and best practices, and an easy-to-learn structure.

Check the book's project or

Buy the book

Social pages of the book:

By buying this book you also donate to Redmine (see this page).


Follow me:

redmine3.4.patch

mizuki ishikawa, 26 Nov 2018 08:36

Download (6.51 KB)

View differences:

app/models/repository/github.rb
5 5

  
6 6
    before_save :set_local_url
7 7
    before_save :register_hook
8
    safe_attributes 'register_hook'
8 9

  
9 10
    def self.human_attribute_name(attribute, *args)
10 11
        attribute_name = attribute.to_s
......
41 42
        extra_boolean_attribute('extra_register_hook')
42 43
    end
43 44

  
45
    def register_hook=(arg)
46
        merge_extra_info "extra_register_hook" => arg
47
    end
48

  
44 49
    def extra_hook_registered
45 50
        extra_boolean_attribute('extra_hook_registered')
46 51
    end
init.rb
32 32
end
33 33

  
34 34
Redmine::Plugin.register :redmine_scm do
35
    requires_redmine version_or_higher: '3.4.0'
35 36
    name        'SCM Creator'
36 37
    author      'Andriy Lesyuk'
37 38
    author_url  'http://www.andriylesyuk.com/'
lib/scm_repositories_controller_patch.rb
26 26

  
27 27
        # Original function
28 28
        #def create
29
        #    attrs = pickup_extra_info
30
        #    @repository = Repository.factory(params[:repository_scm])
31
        #    @repository.safe_attributes = params[:repository]
32
        #    if attrs[:attrs_extra].keys.any?
33
        #        @repository.merge_extra_info(attrs[:attrs_extra])
34
        #    end
35
        #    @repository.project = @project
36
        #    if request.post? && @repository.save
37
        #        redirect_to settings_project_path(@project, :tab => 'repositories')
38
        #    else
39
        #        render :action => 'new'
40
        #    end
29
        #  if @repository.save
30
        #    redirect_to settings_project_path(@project, :tab => 'repositories')
31
        #  else
32
        #    render :action => 'new'
33
        #  end
41 34
        #end
42 35

  
43 36
        def create_with_scm
......
47 40
              ((params[:operation].present? && params[:operation] == 'add') || ScmConfig['only_creator'])) ||
48 41
               !ScmConfig['allow_add_local']
49 42

  
50
                attrs = pickup_extra_info
51

  
52 43
                if params[:operation].present? && params[:operation] == 'add'
53
                    attrs[:attrs] = interface.sanitize(attrs[:attrs])
54
                end
55

  
56
                @repository = Repository.factory(params[:repository_scm])
57
                @repository.safe_attributes = params[:repository]
58
                if attrs[:attrs_extra].keys.any?
59
                    @repository.merge_extra_info(attrs[:attrs_extra])
44
                    @repository.safe_attributes = interface.sanitize(@repository.attributes)
60 45
                end
61 46

  
62
                @repository.project = @project
63

  
64 47
                if @repository.valid? && params[:operation].present? && params[:operation] == 'add'
65 48
                    if !ScmConfig['max_repos'] || ScmConfig['max_repos'].to_i == 0 ||
66 49
                       @project.repositories.select{ |r| r.created_with_scm }.size < ScmConfig['max_repos'].to_i
67
                        scm_create_repository(@repository, interface, attrs[:attrs]['url'])
50
                        scm_create_repository(@repository, interface)
68 51
                    else
69 52
                        @repository.errors.add(:base, :scm_repositories_maximum_count_exceeded, :max => ScmConfig['max_repos'].to_i)
70 53
                    end
......
73 56
                if ScmConfig['only_creator'] && request.post? && @repository.errors.empty? && !@repository.created_with_scm
74 57
                    @repository.errors.add(:base, :scm_only_creator)
75 58
                elsif !ScmConfig['allow_add_local'] && request.post? && @repository.errors.empty? && !@repository.created_with_scm &&
76
                    attrs[:attrs]['url'] =~ %r{\A(file://|([a-z]:)?\.*[\\/])}i
59
                    @repository.url =~ %r{\A(file://|([a-z]:)?\.*[\\/])}i
77 60
                    @repository.errors.add(:base, :scm_local_repositories_denied)
78 61
                end
79 62

  
......
92 75
            update_without_scm
93 76

  
94 77
            if @repository.is_a?(Repository::Github) && # special case for Github
95
               params[:repository][:extra_register_hook] == '1' && !@repository.extra_hook_registered
78
               params[:repository][:register_hook] == '1' && !@repository.extra_hook_registered
96 79
                flash[:warning] = l(:warning_github_hook_registration_failed)
97 80
            end
98 81
        end
......
113 96

  
114 97
    private
115 98

  
116
        def scm_create_repository(repository, interface, url)
117
            name = interface.repository_name(url)
99
        def scm_create_repository(repository, interface)
100
            name = interface.repository_name(repository.url)
118 101
            if name
119 102
                path = interface.default_path(name)
120 103
                if interface.repository_exists?(name)
lib/scm_repositories_helper_patch.rb
12 12
            alias_method_chain :mercurial_field_tags,  :add
13 13
            alias_method_chain :git_field_tags,        :add
14 14
            alias_method_chain :bazaar_field_tags,     :add
15
            
15

  
16 16
            alias_method_chain :scm_path_info_tag, :external if method_defined?(:scm_path_info_tag)
17 17
        end
18 18
    end
......
187 187
                                                                          :onchange => "this.name='repository[password]';") +
188 188
                                           content_tag('em', l(:text_github_credentials_note), :class => 'info'))
189 189
            if !Setting.autofetch_changesets? && GithubCreator.can_register_hook?
190
                githubtags << content_tag('p', form.check_box(:extra_register_hook, :disabled => repository.extra_hook_registered) + ' ' +
190
                githubtags << content_tag('p', form.check_box(:register_hook, :disabled => repository.extra_hook_registered) + ' ' +
191 191
                                               l(:text_github_register_hook_note))
192 192
            end
193 193

  
Terms of use | Privacy policy