-
Star
(313)
You must be signed in to star a gist -
Fork
(139)
You must be signed in to fork a gist
-
-
Save markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 to your computer and use it in GitHub Desktop.
############ If you are using DOCKER all-in-one image, create Dockerfile like: ################ | |
############ FROM openproject/openproject:16 ################ | |
############ COPY ./enterprise_token.rb app/models/enterprise_token.rb ################ | |
############ If you are runing a manual installation: ################ | |
############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################ | |
############ also be sure to RESTART OpenProject after replacing the file. ################ | |
############ If using some other set up (eg docker-compose), read the comments on ################ | |
############ https://gist.github.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 ################ | |
# OpenProject is an open source project management software. | |
# Copyright (C) the OpenProject GmbH | |
# | |
# This program is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU General Public License version 3. | |
# | |
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: | |
# Copyright (C) 2006-2013 Jean-Philippe Lang | |
# Copyright (C) 2010-2013 the ChiliProject Team | |
# | |
# This program is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU General Public License | |
# as published by the Free Software Foundation; either version 2 | |
# of the License, or (at your option) any later version. | |
# | |
# This program is distributed in the hope that it will be useful, | |
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
# GNU General Public License for more details. | |
# | |
# You should have received a copy of the GNU General Public License | |
# along with this program; if not, write to the Free Software | |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
# | |
# See COPYRIGHT and LICENSE files for more details. | |
#++ | |
class EnterpriseToken < ApplicationRecord | |
class << self | |
def current | |
self.new | |
end | |
def allows_to?(feature) | |
true | |
end | |
def active? | |
true | |
end | |
def hide_banners? | |
true | |
end | |
def show_banners? | |
false | |
end | |
def banner_type_for(feature:) | |
nil | |
end | |
end | |
def token_object | |
Class.new do | |
def has_feature?(feature) | |
true | |
end | |
def will_expire? | |
false | |
end | |
def mail | |
"[email protected]" | |
end | |
def subscriber | |
"markasoftware-free-enterprise-mode" | |
end | |
def company | |
"markasoftware" | |
end | |
def domain | |
"markasoftware.com" | |
end | |
def issued_at | |
Time.zone.today - 1 | |
end | |
def starts_at | |
Time.zone.today - 1 | |
end | |
def expires_at | |
Time.zone.today + 1 | |
end | |
def reprieve_days | |
nil | |
end | |
def reprieve_days_left | |
69 | |
end | |
def restrictions | |
nil | |
end | |
def available_features | |
[] | |
end | |
def plan | |
"markasoftware_free_enterprise_mode" | |
end | |
def features | |
[] | |
end | |
def version | |
69 | |
end | |
end.new | |
end | |
def will_expire? | |
false | |
end | |
def mail | |
"[email protected]" | |
end | |
def subscriber | |
"markasoftware-free-enterprise-mode" | |
end | |
def company | |
"markasoftware" | |
end | |
def domain | |
"markasoftware.com" | |
end | |
def issued_at | |
Time.zone.today - 1 | |
end | |
def starts_at | |
Time.zone.today - 1 | |
end | |
def expires_at | |
Time.zone.today + 1 | |
end | |
def reprieve_days | |
nil | |
end | |
def reprieve_days_left | |
69 | |
end | |
def restrictions | |
nil | |
end | |
def available_features | |
[] | |
end | |
def plan | |
"markasoftware_free_enterprise_mode" | |
end | |
def features | |
[] | |
end | |
def version | |
69 | |
end | |
def allows_to?(action) | |
true | |
end | |
def expired?(reprieve: true) | |
false | |
end | |
def invalid_domain? | |
false | |
end | |
end |
Así que, como sospechaba, hay que jugar con las características del modelo. Esto parece funcionar, y también se puede acceder a la página del token: https://github.com/skyssolutions/containers/blob/1a1ba1e3e730c2192755f0470473b66a4f524fc5/apps/openproject/enterprise.rb contenedor con el parche está en:
ghcr.io/skyssolutions/openproject:16.2.0@sha256:f6ed2ec546eaf0159eed2e8b7cb81d59054806765582c3d81eb0d2de0b6fe28e
ok, i have update to your file enterprise_token.rb and i can to access to token page but in page of workpackages list, filter, the option higtlighting color is disabled. Can you help me?
Así que, como sospechaba, hay que jugar con las características del modelo. Esto parece funcionar, y también se puede acceder a la página del token: https://github.com/skyssolutions/containers/blob/1a1ba1e3e730c2192755f0470473b66a4f524fc5/apps/openproject/enterprise.rb contenedor con el parche está en:
ghcr.io/skyssolutions/openproject:16.2.0@sha256:f6ed2ec546eaf0159eed2e8b7cb81d59054806765582c3d81eb0d2de0b6fe28e
ok, i have update to your file enterprise_token.rb and i can to access to token page but in page of workpackages list, filter, the option higtlighting color is disabled. Can you help me?
I don’t use those so no.
@markasoftware i have update to file enterprise_token.rb and i can to access to token page but in page of workpackages list, filter, the option higtlighting color is disabled. Can you help me?
Solemone can tell me if it is working highlighting on 16.2 and this case send me his version of enterprise_token.rb
@javiervalerocelada if ChatGPT or Grok doesn't ring a bell, in the future you should try it:
class EnterpriseToken < ApplicationRecord
include ActiveModel::Serialization
class << self
def current
new
end
def allows_to?(feature)
feature_str = feature.to_s
case feature_str
when "conditional_highlighting"
true
when "attribute_highlighting", "attribute_highlighting_v2"
true
when "baseline_comparison", "baseline_", "condition_", "work_pack", "gantt_pdf", "readonly_", "team_planner", "cost_reporting", "multi_select_custom_fields", "custom_workflows", "board_view", "reportings", "project_attributes", "time_and_costs", "backlogs", "version_comparison", "enterprise_base", "all_features", "custom_panels", "dashboards", "project_filters", "work_package_sharing", "resource_booking", "meeting", "bim", "ldap_groups", "budgeting", "earned_value_management", "project_import", "work_package_query_customization", "work_package_tracking", "work_package_hierarchy", "work_package_export", "cost_object_tracking", "time_tracking_advanced", "team_collaboration", "document_management", "risk_management", "change_management", "portfolio_management", "resource_management", "capacity_planning", "scheduling", "milestone_tracking", "task_dependencies", "status_rollup", "custom_fields_advanced", "reporting_advanced", "forecasting", "integrations", "api_extensions", "security_enhancements"
true
else
true
end
end
def active?
true
end
def hide_banners?
true
end
def show_banners?
false
end
def banner_type_for(feature:)
nil
end
def all_tokens
[new]
end
def active_tokens
[new]
end
def active_non_trial_tokens
[new]
end
def active_trial_token
nil
end
def table_exists?
true
end
def trial_only?
false
end
def available_features
[:conditional_highlighting, :attribute_highlighting, :attribute_highlighting_v2, :enterprise_base, :all_features, :baseline_comparison, :baseline_, :condition_, :work_pack, :gantt_pdf, :readonly_, :team_planner, :cost_reporting, :multi_select_custom_fields, :custom_workflows, :board_view, :reportings, :project_attributes, :time_and_costs, :backlogs, :version_comparison, :custom_panels, :dashboards, :project_filters, :work_package_sharing, :resource_booking, :meeting, :bim, :ldap_groups, :budgeting, :earned_value_management, :project_import, :work_package_query_customization, :work_package_tracking, :work_package_hierarchy, :work_package_export, :cost_object_tracking, :time_tracking_advanced, :team_collaboration, :document_management, :risk_management, :change_management, :portfolio_management, :resource_management, :capacity_planning, :scheduling, :milestone_tracking, :task_dependencies, :status_rollup, :custom_fields_advanced, :reporting_advanced, :forecasting, :integrations, :api_extensions, :security_enhancements]
end
def non_trialling_features
[:conditional_highlighting, :attribute_highlighting, :attribute_highlighting_v2, :enterprise_base, :all_features, :baseline_comparison, :baseline_, :condition_, :work_pack, :gantt_pdf, :readonly_, :team_planner, :cost_reporting, :multi_select_custom_fields, :custom_workflows, :board_view, :reportings, :project_attributes, :time_and_costs, :backlogs, :version_comparison, :custom_panels, :dashboards, :project_filters, :work_package_sharing, :resource_booking, :meeting, :bim, :ldap_groups, :budgeting, :earned_value_management, :project_import, :work_package_query_customization, :work_package_tracking, :work_package_hierarchy, :work_package_export, :cost_object_tracking, :time_tracking_advanced, :team_collaboration, :document_management, :risk_management, :change_management, :portfolio_management, :resource_management, :capacity_planning, :scheduling, :milestone_tracking, :task_dependencies, :status_rollup, :custom_fields_advanced, :reporting_advanced, :forecasting, :integrations, :api_extensions, :security_enhancements]
end
def trialling_features
[]
end
def trialling?(feature)
false
end
def user_limit
nil
end
def set_active_tokens
[new]
end
def clear_current_tokens_cache
true
end
end
def token_object
@token_object ||= OpenStruct.new(
has_feature?: ->(feature) { true },
will_expire?: false,
expired?: ->(reprieve: true) { false },
validate_domain?: false,
valid_domain?: ->(_host) { true },
subscriber: "Open Source Community",
mail: "[email protected]",
company: "OpenProject Community",
domain: Setting.host_name,
issued_at: Date.today,
starts_at: Date.today,
expires_at: nil,
restrictions: {}
)
end
def allows_to?(action)
true
end
def expired?(reprieve: true)
false
end
def invalid_domain?
false
end
def unlimited_users?
true
end
def max_active_users
nil
end
def sort_key
[nil, Date.today]
end
def days_left
nil
end
private
def strip_encoded_token
self.encoded_token = nil
end
def load_token!
@token_object
end
def valid_token_object
true
end
end
So as I suspected, one needs to just play with the features things on the model. This seems to work, and the token page is also accessible: https://github.com/skyssolutions/containers/blob/1a1ba1e3e730c2192755f0470473b66a4f524fc5/apps/openproject/enterprise.rb
Container with the patch is at:
ghcr.io/skyssolutions/openproject:16.2.0@sha256:f6ed2ec546eaf0159eed2e8b7cb81d59054806765582c3d81eb0d2de0b6fe28e