Extension:BetaFeatures/hi
BetaFeatures प्रकाशन की स्थिति: स्थिर |
|
---|---|
File:BetaFeatures 2013-09-06.png | |
कार्यान्वयन | मीडिया, हुक , डेटाबेस |
विवरण | दूसरे एक्सटेंशन अपनी बीटा सुविधाओं को सदस्य वरीयताओं में पंजीकृत कर सकते हैं |
लेखक | Mark Holmquist (MarkTraceurtalk) |
संगतता नीति | मीडियाविकि के साथ प्रकाशित स्नैपशॉट्स। Master में पीछे की तरफ से संगतता नहीं है। |
MediaWiki | 1.25+ |
PHP | 5.4+ |
टेबल | betafeatures_user_counts |
लाइसेंस | कोई लाइसेंस नहीं दिया गया है |
डाउनलोड करें | |
उदाहरण | Special:Preferences#mw-prefsection-betafeatures |
Special |
|
Quarterly downloads | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Public wikis using | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
BetaFeatures एक्सटेंशन को अनुवादित करें अगर यह translatewiki.net पर उपलब्ध है | |
मुद्दे | अधूरे कार्य · बग की रिपोर्ट करें |
BetaFeatures की मदद से दूसरे मीडियाविकि एक्सटेंशन्स विकि पर सदस्य वरीयताओं की सूची में बीटा सुविधाएँ पंजीकृत कर सकते हैं। यह सदस्य वरीयताओं की मौजूदा संरचना और कुछ विशेष पृष्ठों का इस्तेमाल करके अपना काम करता है।
स्थापना
- <translate> [[<tvar name=2>Special:ExtensionDistributor/BetaFeatures/hi</tvar>|Download]] and move the extracted <tvar name=name>
BetaFeatures/hi
</tvar> folder to your <tvar name=ext>extensions/
</tvar> directory.</translate>
<translate> Developers and code contributors should install the extension [[<tvar name=git>Special:MyLanguage/Download from Git</tvar>|from Git]] instead, using:</translate>cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/BetaFeatures%2Fhi - <translate> Add the following code at the bottom of your <tvar name=1>LocalSettings.php </tvar> file:</translate>
wfLoadExtension( 'BetaFeatures/hi' );
- <translate> Run the [[<tvar name=update>Special:MyLanguage/Manual:Update.php</tvar>|update script]] which will automatically create the necessary database tables that this extension needs.</translate>
- आवश्यकतानुसार कॉन्फ़िगर करें।
- File:OOjs UI icon check-constructive.svg <translate> Done</translate> – <translate> Navigate to <tvar name=special>Special:Version</tvar> on your wiki to verify that the extension is successfully installed.</translate>
अपने एक्सटेंशन में नए हुक्स का इस्तेमाल करना
अपनी बीटा सुविधा को समर्थित करने के लिए इस एक्सटेंशन का इस्तेमाल करना आसान है। अपने extension.json फ़ाइल में "GetBetaFeaturePreferences " प्रकार का एक हुक पंजीकृत करें — इसका सिनटैक्स बिलकुल GetPreferences हुक जैसा ही है, जिसमें इस मामले में ज़रूरी वरीयताओं से मेल खाने के लिए थोड़े से बदलाव किए गए हैं।
extension.json
में:
"Hooks": {
"GetBetaFeaturePreferences": "MediaWiki\\Extension\\MyExtension\\Hooks::onGetBetaFeaturePreferences"
},
MyExtension/includes/Hooks.php
में:
namespace MediaWiki\Extension\MyExtension;
class Hooks {
public static function onGetBetaFeaturePreferences( User $user, array &$betaPrefs ) {
$extensionAssetsPath = MediaWikiServices::getInstance()
->getMainConfig()
->get( 'ExtensionAssetsPath' );
$betaPrefs['myextension-awesome-feature'] = [
// The first two are message keys
'label-message' => 'myextension-awesome-feature-message',
'desc-message' => 'myextension-awesome-feature-description',
// Paths to images that represents the feature.
// The image is usually different for ltr and rtl languages.
// Images for specific languages can also specified using the language code.
'screenshot' => array(
'ru' => "$extensionAssetsPath/MyExtension/images/screenshot-ru.png",
'ltr' => "$extensionAssetsPath/MyExtension/images/screenshot-ltr.png",
'rtl' => "$extensionAssetsPath/MyExtension/images/screenshot-rtl.png",
),
// Link to information on the feature - use subpages on mw.org, maybe?
'info-link' => 'https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:MyExtension/MyFeature',
// Link to discussion about the feature - talk pages might work
'discussion-link' => 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help_talk:Extension:MyExtension/MyFeature',
];
}
}
इसके बाद आप BetaFeatures द्वारा प्रदत्त सुविधा फ़ंक्शन्स की मदद से जाँच सकते हैं कि सुविधा सक्षम है कि नहीं।
// SpecialMyExtension.php
class SpecialMyExtension extends SpecialPage {
public function execute() {
if ( BetaFeatures::isFeatureEnabled( $this->getUser(), 'my-awesome-feature' ) ) {
// Implement the feature!
}
}
}
आप एक साधारण वरीयता जाँच का भी इस्तेमाल कर सकते हैं, मगर सच या झूठ वैल्यू न जाँचें - HTMLFeatureField क्लास के वैल्यूओं का इस्तेमाल करें।
// SpecialMyExtension.php
class SpecialMyExtension extends SpecialPage {
public function execute() {
if ( $this->getUser()->getOption( 'my-awesome-feature' ) === HTMLFeatureField::OPTION_ENABLED ) {
// Implement the feature!
}
}
}
क्योंकि BetaFeatures क्लास हर जगह मौजूद होना चाहिए, आप सुविधा फ़ंक्शन का इस्तेमाल किसी भी हुक, विशेष पृष्ठ आदि में, या जहाँ आप चाहें वहाँ कर सकते हैं। बस ध्यान रखें कि इन बदलावों से आप प्रदर्शन या कैशिंग में समस्याएँ पैदा कर सकते हैं।
अगर आप अपने एक्सटेंशन का BetaFeatures के बिना भी इस्तेमाल करना चाहते हैं, आपको इसकी मौजूदगी भी जाँचनी होगी, जैसे:
if (
!ExtensionRegistry::getInstance()->isLoaded( 'BetaFeatures' )
|| \BetaFeatures::isFeatureEnabled( $user, 'my-awesome-feature' )
) {
// Implement the feature!
}
कॉन्फ़िगरेशन
1 कॉन्फ़िगरेशन वेरिएबल की मदद से यह सीमित किया जा सकता है कि किन बीटा सुविधाओं को वरीयताओं में दिखाया जाएगा। डिफ़ॉल्ट से यह खाली होता है, और सभी बीटा सुविधाएँ दिखाई जाती हैं।
अगर इसका इस्तेमाल किया जाता है, किसी बीटा सुविधा को वरीयताओं में दिखने के लिए इसे व्हाइटलिस्ट में सूचीबद्ध होना होगा।
यह कॉन्फ़िगरेशन वेरिएबल स्ट्रिंग्स का एक ऐरे स्वीकार करेगा।
हर स्ट्रिंग को एक बीटा सुविधा का नाम होना होगा जो onGetBetaFeaturePreferences()
को पास की गई वरीयता की परिभाषा में निर्दिष्ट होगा।
उदाहरणस्वरूप, उपरोक्त कोड में बीटा सुविधा का नाम है myextension-awesome-feature
, तो आप यह स्ट्रिंग अपने विकि के कॉन्फ़िगरेशन के $wgBetaFeaturesWhitelist
ऐरे में जोड़ेंगे:
$wgBetaFeaturesWhitelist = [
'myextension-awesome-feature'
];
उन्नत उपयोग
कुछ बहुत दिलचस्प देखना चाहेंगे?
स्वचालित सदस्यता समूह
इस उदाहरण में हम एक वरीयता पंजीकृत करेंगे जो एक "स्वचालित सदस्यता" वाला होगा - अगर सदस्य इसे चेक करेगा, और किसी समूह में नई सुविधाएँ आएँगी, सदस्य को अपने आप उन सुविधाओं में सदस्यता दिला दी जाएगी।
// MyExtensionHooks.php
class MyExtensionHooks {
static function getPreferences( $user, &$prefs ) {
global $wgExtensionAssetsPath;
$prefs['my-awesome-feature-auto-enroll'] = array(
// The first two are message keys
'label-message' => 'beta-feature-autoenroll-message',
'desc-message' => 'beta-feature-autoenroll-description',
// Link to information on the feature - use subpages on mw.org, maybe?
'info-link' => 'https://wwww.mediawiki.org/wiki/Special:MyLanguage/MyFeature',
// Link to discussion about the feature - talk pages might work
'discussion-link' => 'https://www.mediawiki.org/wiki/Talk:MyFeature',
// Enable auto-enroll for this group
'auto-enrollment' => 'my-awesome-feature-group',
);
$prefs['my-awesome-feature'] = array(
// The first two are message keys
'label-message' => 'beta-feature-message',
'desc-message' => 'beta-feature-description',
// Paths to images that represents the feature.
// The image is usually different for ltr and rtl languages.
// Images for specific languages can also specified using the language code.
'screenshot' => array(
'ru' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-ru.png",
'ltr' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-ltr.png",
'rtl' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-rtl.png",
),
// Link to information on the feature - use subpages on mw.org, maybe?
'info-link' => 'https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:MyExtension/SomeFeature',
// Link to discussion about the feature - talk pages might work
'discussion-link' => 'https://www.mediawiki.org/wiki/Extension_talk:MyExtension/SomeFeature',
// Add feature to this group
'group' => 'my-awesome-feature-group',
);
}
}
निर्भरताओं का प्रबंधन
इसके बाद हम हर सुविधा के लिए निर्भरताओं के प्रबंधन को परिभाषित कर सकते हैं। ऐसा करने के लिए हमें "GetBetaFeatureDependencyHooks " हुक के साथ पहले एक हुक का नाम पंजीकृत करना होगा जिसका हम इसके लिए इस्तेमाल करना चाहते हैं, और फिर हम उस प्रकार का एक हुक पंजीकृत करेंगे जो कोई निर्भरता जाँचेगा और उसके मेल खा जाने पर true लौटाएगा, नहीं तो false लौटाएगा।
// MyExtension.php
$wgAutoloadClasses['MyExtensionHooks'] = __DIR__ . '/MyExtensionHooks.php';
Hooks::register( 'GetBetaFeaturePreferences', 'MyExtensionHooks::getPreferences' );
Hooks::register( 'GetBetaFeatureDependencyHooks', 'MyExtensionHooks::getDependencyCallbacks' );
Hooks::register( 'CheckDependenciesForMyExtensionFeature', 'MyExtensionHooks::checkDependencies' );
// MyExtensionHooks.php
class MyExtensionHooks {
static function getPreferences( $user, &$prefs ) {
global $wgExtensionAssetsPath;
$prefs['my-awesome-feature'] = array(
// The first two are message keys
'label-message' => 'beta-feature-message',
'desc-message' => 'beta-feature-description',
// Paths to images that represents the feature.
// The image is usually different for ltr and rtl languages.
// Images for specific languages can also specified using the language code.
'screenshot' => array(
'ru' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-ru.png",
'ltr' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-ltr.png",
'rtl' => "$wgExtensionAssetsPath/MyExtension/images/screenshot-rtl.png",
),
// Link to information on the feature - use subpages on mw.org, maybe?
'info-link' => 'https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:MyExtension/SomeFeature',
// Link to discussion about the feature - talk pages might work
'discussion-link' => 'https://www.mediawiki.org/wiki/Extension_talk:MyExtension/SomeFeature',
// Mark as dependent on something
'dependent' => true,
);
}
static function getDependencyCallbacks( &$depHooks ) {
$depHooks['my-awesome-feature'] = 'CheckDependenciesForMyExtensionFeature';
return true;
}
static function checkDependencies() {
$dependenciesMet = false;
// Do some fancy checking and return the result
return $dependenciesMet;
}
}
आप इस सुविधा का गलत इस्तेमाल करके हर विकि पर सुविधाएँ अक्षम कर सकते हैं, अगर उन्हें स्वतंत्र चिह्नित किया गया हो। मगर यह हैक करने जैसा हो जाएगा। शायद आपको ऐसा नहीं करना चाहिए। मुझे पता आप यही करने की सोच रहे हैं, मगर अब बस कीजिए।
डेटाबेस की चीज़ें
BetaFeatures द्वारा एक डेटाबेस टेबल (betafeatures_user_counts
) परिभाषित किया गया है, और इसका इस्तेमाल किया जाता है। लेकिन अगर आप इसका लोकल रूप से इस्तेमाल करने की कोशिश करेंगे तो यह आपको कनफ़्यूज़ कर सकता है।
हम इस कार्य कतार की मदद से इस टेबल के लिए अपडेट्स चलाते हैं जब कैश समाप्त हो जाता है (30 मिनट का जीवन-समय)। अगर आपके विकि को हर अनुरोध पर कार्य चलाने के लिए कॉन्फ़िगर किया गया है, यह हर 30 मिनट बाद बहुऽऽऽऽऽत धीमी रफ़्तार से चलेगा, मगर बाकी का काम जल्दी हो जाएगा। अगर आप अपने विकि को cron के ज़रिए कार्य चलाने के लिए कॉन्फ़िगर करते हैं, यह इससे काफ़ी बेहतर काम करेगा।
इन्हें भी देखें
File:Wikimedia-logo black.svg | <translate> This {{<tvar name=1>#ifeq:Extension|Extension</tvar>|extension|skin}} is being used on one or more [[<tvar name=2>m:Special:MyLanguage/Wikimedia projects</tvar>|Wikimedia projects]].</translate> <translate> This probably means that the {{<tvar name=1>#ifeq:Extension|Extension</tvar>|extension|skin}} is stable and works well enough to be used by such high-traffic websites.</translate> <translate> Look for this {{<tvar name=1>#ifeq:Extension|Extension</tvar>|extension's|skin's}} name in Wikimedia's <tvar name=2>CommonSettings.php</tvar> and <tvar name=3>InitialiseSettings.php</tvar> configuration files to see where it's installed.</translate> <translate> A full list of the {{<tvar name=1>#ifeq:Extension|Extension</tvar>|extensions|skins}} installed on a particular wiki can be seen on the wiki's <tvar name=ver>Special:Version</tvar> page.</translate> |
BetaFeatures 2013-09-06.png |
- Pages with script errors
- Pages with broken file links
- Stable extensions/hi
- Media handling extensions/hi
- Hook extensions/hi
- Database extensions/hi
- Extensions with manual MediaWiki version
- Extensions with no license specified/hi
- Extensions in Wikimedia version control/hi
- All extensions/hi
- Extensions not in ExtensionJson
- Extensions used on Wikimedia/hi
- Beta Features/hi