/** * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ import wrap from '@vue/web-component-wrapper' import Vue from 'vue' /** * * @param VueComponent {Object} The Vue component to turn into a Web Components custom element. * @param customElementId {string} The element name, it must be unique. Recommended pattern oca-$appid-(checks|operations)-$use_case, example: oca-my_app-checks-request_user_agent */ function registerCustomElement(VueComponent, customElementId) { const WrappedComponent = wrap(Vue, VueComponent) if (window.customElements.get(customElementId)) { console.error('Custom element with ID ' + customElementId + ' is already defined!') throw new Error('Custom element with ID ' + customElementId + ' is already defined!') } window.customElements.define(customElementId, WrappedComponent) // In Vue 2, wrap doesn't support disabling shadow :( // Disable with a hack Object.defineProperty(WrappedComponent.prototype, 'attachShadow', { value() { return this } }) Object.defineProperty(WrappedComponent.prototype, 'shadowRoot', { get() { return this } }) return customElementId } export { registerCustomElement } on value='2.2-stable'>2.2-stable Mirror of redmine code source: https://github.com/redmine/redminewww-data
summaryrefslogtreecommitdiffstats
path: root/extra/sample_plugin/app/controllers/example_controller.rb
blob: d38d01d917ccf395d930fa149a763702b0b2d8fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Sample plugin controller
class ExampleController < ApplicationController
  layout 'base'
  before_action :find_project, :authorize
  menu_item :sample_plugin

  def say_hello
    @value = Setting.plugin_sample_plugin['sample_setting']
  end

  def say_goodbye
  end

private
  def find_project
    @project=Project.find(params[:id])
  end
end