Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.sql |
— | — | @@ -0,0 +1,49 @@ |
| 2 | +-- Store mapping of i18n key of "rating" to an ID |
| 3 | +CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/article_assessment_ratings ( |
| 4 | + -- Rating Id |
| 5 | + aar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, |
| 6 | + -- Text (i18n key) for rating description |
| 7 | + aar_rating varchar(255) binary NOT NULL |
| 8 | +) /*$wgDBTableOptions*/; |
| 9 | + |
| 10 | +-- Default article assessment ratings for the pilot |
| 11 | +INSERT INTO /*$wgDBprefix*/article_assessment_ratings (aar_rating) VALUES |
| 12 | +('articleassessment-rating-wellsourced'), ('articleassessment-rating-neutrality'), |
| 13 | +('articleassessment-rating-completeness'), ('articleassessment-rating-readability'); |
| 14 | + |
| 15 | +-- Store article assessments (user rating per revision) |
| 16 | +CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/article_assessment ( |
| 17 | + -- Foreign key to page.page_id |
| 18 | + aa_page_id integer unsigned NOT NULL, |
| 19 | + -- User Id (0 if anon) |
| 20 | + aa_user_id integer NOT NULL, |
| 21 | + -- Username or IP address |
| 22 | + aa_user_text varchar(255) binary NOT NULL, |
| 23 | + -- Unique token for anonymous users (to facilitate ratings from multiple users on the same IP) |
| 24 | + aa_user_anon_token binary(32) DEFAULT '', |
| 25 | + -- Foreign key to revision.rev_id |
| 26 | + aa_revision integer unsigned NOT NULL, |
| 27 | + -- MW Timestamp |
| 28 | + aa_timestamp binary(14) NOT NULL DEFAULT '', |
| 29 | + -- Foreign key to article_assessment_ratings.aar_rating |
| 30 | + aa_rating_id int unsigned NOT NULL, |
| 31 | + -- Value of the rating (0 is "unrated", else 1-5) |
| 32 | + aa_rating_value int unsigned NOT NULL, |
| 33 | + -- 1 vote per user per revision |
| 34 | + PRIMARY KEY (aa_revision, aa_user_text, aa_rating_id, aa_user_anon_token) |
| 35 | +) /*$wgDBTableOptions*/; |
| 36 | +CREATE INDEX /*i*/aa_user_page_revision ON /*_*/article_assessment (aa_user_id, aa_page_id, aa_revision); |
| 37 | + |
| 38 | +-- Aggregate rating table for a page |
| 39 | +CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/article_assessment_pages ( |
| 40 | + -- Foreign key to page.page_id |
| 41 | + aap_page_id integer unsigned NOT NULL, |
| 42 | + -- Foreign key to article_assessment_ratings.aar_rating |
| 43 | + aap_rating_id integer unsigned NOT NULL, |
| 44 | + -- Sum (total) of all the ratings for this article revision |
| 45 | + aap_total integer unsigned NOT NULL, |
| 46 | + -- Number of ratings |
| 47 | + aap_count integer unsigned NOT NULL, |
| 48 | + -- One rating row per page |
| 49 | + PRIMARY KEY (aap_page_id, aap_rating_id) |
| 50 | +) /*$wgDBTableOptions*/; |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.sql |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 51 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.i18n.php |
— | — | @@ -0,0 +1,835 @@ |
| 2 | +<?php |
| 3 | +$messages = array(); |
| 4 | + |
| 5 | +/** English |
| 6 | + * @author Nimish Gautam |
| 7 | + * @author Sam Reed |
| 8 | + * @author Brandon Harris |
| 9 | + */ |
| 10 | +$messages['en'] = array( |
| 11 | + 'articleassessment' => 'Article assessment', |
| 12 | + 'articleassessment-desc' => 'Article assessment (pilot version)', |
| 13 | + 'articleassessment-yourfeedback' => 'Your feedback', |
| 14 | + 'articleassessment-pleaserate' => 'Please take a moment to rate this page below.', |
| 15 | + 'articleassessment-submit' => 'Submit', |
| 16 | + 'articleassessment-rating-wellsourced' => 'Well-Sourced:', |
| 17 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 18 | + 'articleassessment-rating-completeness' => 'Complete:', |
| 19 | + 'articleassessment-rating-readability' => 'Readable:', |
| 20 | + 'articleassessment-rating-wellsourced-tooltip' => 'Do you feel this page has sufficient citations and that those citations come from trustworthy sources?', |
| 21 | + 'articleassessment-rating-neutrality-tooltip' => 'Do you feel that this page shows a fair representation of all perspectives on the issue?', |
| 22 | + 'articleassessment-rating-completeness-tooltip' => 'Do you feel that this page covers the essential topic areas that it should?', |
| 23 | + 'articleassessment-rating-readability-tooltip' => 'Do you feel that this page is well-organized and well written?', |
| 24 | + 'articleassessment-articlerating' => 'Page rating', |
| 25 | + 'articleassessment-error' => 'An error has occurred. |
| 26 | +Please try again later.', |
| 27 | + 'articleassessment-thanks' => 'Thanks! Your ratings have been saved.', |
| 28 | + 'articleassessment-featurefeedback' => 'Give us <span class="feedbacklink">feedback</span> about this feature.', |
| 29 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|rating|ratings}})', |
| 30 | + 'articleassessment-stalemessage-norevisioncount' => "This page has been ''revised'' since you last reviewed it. |
| 31 | +You may wish to rate it again.", |
| 32 | + 'articleassessment-results-show' => '(Results hidden. <span class="showlink">Show</span> them.)', |
| 33 | + 'articleassessment-results-hide' => '(<span class="hidelink">Hide results</span>)', |
| 34 | + 'articleassessment-survey-question-whyrated' => 'Please let us know why you rated this page today (check all that apply):', |
| 35 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'I wanted to contribute to the overall rating of the page', |
| 36 | + 'articleassessment-survey-answer-whyrated-development' => 'I hope that my rating would positively affect the development of the page', |
| 37 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'I wanted to contribute to {{SITENAME}}', |
| 38 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'I like sharing my opinion', |
| 39 | + 'articleassessment-survey-answer-whyrated-didntrate' => "I didn't provide ratings today, but wanted to give feedback on the feature", |
| 40 | + 'articleassessment-survey-answer-whyrated-other' => 'Other', |
| 41 | + 'articleassessment-survey-question-useful' => 'Do you believe the ratings provided are useful and clear?', |
| 42 | + 'articleassessment-survey-question-useful-iffalse' => 'Why?', |
| 43 | + 'articleassessment-survey-question-expert' => 'Do you consider yourself an expert in the field this page covers?', |
| 44 | + 'articleassessment-survey-question-expert-iftrue' => 'Can you describe your expertise?', |
| 45 | + 'articleassessment-survey-question-comments' => 'Do you have any additional comments?', |
| 46 | + 'articleassessment-survey-submit' => 'Submit', |
| 47 | + 'articleassessment-survey-title' => 'Please answer a few questions', |
| 48 | + 'articleassessment-survey-thanks' => 'Thanks for filling out the survey.', |
| 49 | +); |
| 50 | + |
| 51 | +/** Message documentation (Message documentation) |
| 52 | + * @author Brandon Harris |
| 53 | + * @author EugeneZelenko |
| 54 | + * @author Sam Reed |
| 55 | + */ |
| 56 | +$messages['qqq'] = array( |
| 57 | + 'articleassessment' => 'The title of the feature. It is about reader feedback. |
| 58 | + |
| 59 | +Please visit http://prototype.wikimedia.org/articleassess/Main_Page for a prototype installation.', |
| 60 | + 'articleassessment-desc' => '{{desc}}', |
| 61 | + 'articleassessment-yourfeedback' => 'This is a box or section header. It indicates that the contents of the box are personal to the user.', |
| 62 | + 'articleassessment-pleaserate' => 'This is a call to action for the user to provide their ratings about the page.', |
| 63 | + 'articleassessment-submit' => '{{Identical|Submit}}', |
| 64 | + 'articleassessment-rating-wellsourced' => 'This is a rating metric label. The metric is for measuring how researched the article is.', |
| 65 | + 'articleassessment-rating-neutrality' => "This is a rating metric label. The metric is for measuring an article's NPOV.", |
| 66 | + 'articleassessment-rating-completeness' => 'This is a rating metric label. The metric is for measuring how comprehensive the article is.', |
| 67 | + 'articleassessment-rating-readability' => 'This is a rating metric label. The metric is for measuring how well written the article is.', |
| 68 | + 'articleassessment-rating-wellsourced-tooltip' => 'This is a tool tip that is designed to explain what the "well-sourced" metric means.', |
| 69 | + 'articleassessment-rating-neutrality-tooltip' => 'This is a tool tip that is designed to explain what the "neutrality" metric means.', |
| 70 | + 'articleassessment-rating-completeness-tooltip' => 'This is a tool tip that is designed to explain what the "completeness" metric means.', |
| 71 | + 'articleassessment-rating-readability-tooltip' => 'This is a tool tip that is designed to explain what the "readability" metric means.', |
| 72 | + 'articleassessment-articlerating' => 'This is a box or section header. It indicates that the contents of the box are the average ratings for the article.', |
| 73 | + 'articleassessment-error' => 'A generic error message to display on any error.', |
| 74 | + 'articleassessment-thanks' => 'The message to display when the user has successfully submitted a rating.', |
| 75 | + 'articleassessment-featurefeedback' => 'This is a call to action link for users to provide feedback about the feature. It takes them to a survey.', |
| 76 | + 'articleassessment-noratings' => 'This indicates the number of ratings that the article has received. |
| 77 | +Note that PLURAL does not currently work in this message but defaults to the zero; it will work properly in the near future, so keep the calls in.', |
| 78 | + 'articleassessment-stalemessage-norevisioncount' => 'This is a message shown to the user when their ratings are "stale" and does NOT include the number of revisions. This is an ambiguous reason, and allows for us to have complicated staleness patterns. This is the preferred message.', |
| 79 | + 'articleassessment-results-show' => 'This is an explanatory control that, when clicked, will display hidden aggregate ratings. |
| 80 | +The span tag gets rewritten in JavaScript to become a link.', |
| 81 | + 'articleassessment-results-hide' => 'This is a control that, when clicked, will hide the aggregate ratings. |
| 82 | +The span tag gets rewritten in JavaScript to become a link.', |
| 83 | + 'articleassessment-survey-question-whyrated' => 'This is a question in the survey with checkboxes for the answers. The user can check multiple answers.', |
| 84 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 85 | + 'articleassessment-survey-answer-whyrated-development' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 86 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 87 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 88 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 89 | + 'articleassessment-survey-answer-whyrated-other' => 'This is a possible answer for the "Why did you rate this article today?" survey question. The user can check this to fill out an answer that wasn\'t provided as a checkbox. |
| 90 | +{{Identical|Other}}', |
| 91 | + 'articleassessment-survey-question-useful' => 'This is a question in the survey with "yes" and "no" (prefswitch-survey-true and prefswitch-survey-false) as possible answers.', |
| 92 | + 'articleassessment-survey-question-useful-iffalse' => 'This question appears when the user checks "no" for the "Do you believe the ratings provided are useful and clear?" question. The user can enter their answer in a text box.', |
| 93 | + 'articleassessment-survey-question-expert' => 'This is a possible answer for the "Why did you rate this article today?" survey question.', |
| 94 | + 'articleassessment-survey-question-expert-iftrue' => 'This question appears when the user checks "no" for the "Do you consider yourself an expert?" question. The user can enter their answer in a text box.', |
| 95 | + 'articleassessment-survey-question-comments' => 'This is a question in the survey with a text box that the user can enter their answer in.', |
| 96 | + 'articleassessment-survey-submit' => 'This is the caption for the button that submits the survey. |
| 97 | +{{Identical|Submit}}', |
| 98 | + 'articleassessment-survey-title' => 'This text appears in the title bar of the survey dialog.', |
| 99 | + 'articleassessment-survey-thanks' => 'This text appears when the user has successfully submitted the survey.', |
| 100 | +); |
| 101 | + |
| 102 | +/** Afrikaans (Afrikaans) |
| 103 | + * @author Naudefj |
| 104 | + */ |
| 105 | +$messages['af'] = array( |
| 106 | + 'articleassessment-yourfeedback' => 'U terugvoer', |
| 107 | + 'articleassessment-submit' => 'Dien in', |
| 108 | + 'articleassessment-rating-wellsourced' => 'Goed van bronne voorsien:', |
| 109 | + 'articleassessment-rating-neutrality' => 'Neutraal:', |
| 110 | + 'articleassessment-rating-completeness' => 'Volledig:', |
| 111 | + 'articleassessment-rating-readability' => 'Leesbaar:', |
| 112 | + 'articleassessment-articlerating' => 'Artikel gradering', |
| 113 | + 'articleassessment-results-show' => '(Resultate versteek. <span class="showlink">Wys</span> hulle.)', |
| 114 | + 'articleassessment-results-hide' => '(<span class="hidelink">Versteek resultate</span>)', |
| 115 | +); |
| 116 | + |
| 117 | +/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца)) |
| 118 | + * @author EugeneZelenko |
| 119 | + * @author Jim-by |
| 120 | + */ |
| 121 | +$messages['be-tarask'] = array( |
| 122 | + 'articleassessment' => 'Адзнака артыкулаў', |
| 123 | + 'articleassessment-desc' => 'Адзнака артыкулаў (пачатковая вэрсія)', |
| 124 | + 'articleassessment-yourfeedback' => 'Ваш водгук', |
| 125 | + 'articleassessment-pleaserate' => 'Калі ласка, знайдзіце час, каб адзначыць старонку ўнізе.', |
| 126 | + 'articleassessment-submit' => 'Даслаць', |
| 127 | + 'articleassessment-rating-wellsourced' => 'Спасылкі на крыніцы:', |
| 128 | + 'articleassessment-rating-neutrality' => 'Нэўтральнасьць:', |
| 129 | + 'articleassessment-rating-completeness' => 'Скончанасьць:', |
| 130 | + 'articleassessment-rating-readability' => 'Лёгкасьць чытаньня:', |
| 131 | + 'articleassessment-rating-wellsourced-tooltip' => 'Вы лічыце, што гэты артыкул мае дастаткова цытатаў, і яны спасылаюцца на крыніцы, якія заслугоўваюць даверу?', |
| 132 | + 'articleassessment-rating-neutrality-tooltip' => 'Вы лічыце, што на гэтай старонцы адлюстраваныя усе пункты гледжаньня на пытаньне?', |
| 133 | + 'articleassessment-rating-completeness-tooltip' => 'Вы лічыце, што гэтая старонка раскрывае асноўныя пытаньні тэмы як сьлед?', |
| 134 | + 'articleassessment-rating-readability-tooltip' => 'Вы лічыце, што гэтая старонка добра арганізаваная і добра напісаная?', |
| 135 | + 'articleassessment-articlerating' => 'Адзнака старонкі', |
| 136 | + 'articleassessment-error' => 'Узьнікла памылка. |
| 137 | +Калі ласка, паспрабуйце потым.', |
| 138 | + 'articleassessment-thanks' => 'Дзякуй! Вашая адзнака была захаваная.', |
| 139 | + 'articleassessment-featurefeedback' => 'Паведаміце нам <span class="feedbacklink">Вашае меркаваньне</span> пра гэтую магчымасьць.', |
| 140 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|адзнака|адзнакі|адзнакаў}})', |
| 141 | + 'articleassessment-stalemessage-norevisioncount' => "Гэтая старонка была ''рэдагаваная'' пасьля Вашага апошняга рэцэнзаваная. |
| 142 | +Верагодна, Вы жадаеце адзначыць яе яшчэ раз.", |
| 143 | + 'articleassessment-results-show' => '(Вынікі схаваныя. <span class="showlink">Паказаць</span> іх.)', |
| 144 | + 'articleassessment-results-hide' => '(<span class="hidelink">Схаваць вынікі</span>)', |
| 145 | + 'articleassessment-survey-question-whyrated' => 'Калі ласка, паведаміце нам, чаму Вы адзначылі сёньня гэтую старонку (пазначце ўсе падыходзячыя варыянты):', |
| 146 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Я жадаю зрабіць унёсак у агульную адзнаку старонкі', |
| 147 | + 'articleassessment-survey-answer-whyrated-development' => 'Я спадзяюся, што мая адзнака пазытыўна паўплывае на разьвіцьцё старонкі', |
| 148 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Я жадаю садзейнічаць разьвіцьцю {{GRAMMAR:родны|{{SITENAME}}}}', |
| 149 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Я жадаю падзяліцца маім пунктам гледжаньня', |
| 150 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Я не адзначыў сёньня, але хацеў даць водгук пра гэтую магчымасьць', |
| 151 | + 'articleassessment-survey-answer-whyrated-other' => 'Іншае', |
| 152 | + 'articleassessment-survey-question-useful' => 'Вы верыце, што пададзеныя адзнакі карысныя і зразумелыя?', |
| 153 | + 'articleassessment-survey-question-useful-iffalse' => 'Чаму?', |
| 154 | + 'articleassessment-survey-question-expert' => 'Вы лічыце сябе экспэртам у галіне, якая датычыцца тэма гэтай старонцы?', |
| 155 | + 'articleassessment-survey-question-expert-iftrue' => 'Вы можаце апісаць узровень Вашых ведаў?', |
| 156 | + 'articleassessment-survey-question-comments' => 'Вы маеце якія-небудзь дадатковыя камэнтары?', |
| 157 | + 'articleassessment-survey-submit' => 'Даслаць', |
| 158 | + 'articleassessment-survey-title' => 'Калі ласка, адкажыце на некалькі пытаньняў', |
| 159 | + 'articleassessment-survey-thanks' => 'Дзякуй за адказы на пытаньні.', |
| 160 | +); |
| 161 | + |
| 162 | +/** Breton (Brezhoneg) |
| 163 | + * @author Gwendal |
| 164 | + */ |
| 165 | +$messages['br'] = array( |
| 166 | + 'articleassessment-submit' => 'Kas', |
| 167 | + 'articleassessment-rating-neutrality' => 'Diberzh :', |
| 168 | + 'articleassessment-rating-completeness' => 'Graet :', |
| 169 | + 'articleassessment-rating-readability' => 'Lennus :', |
| 170 | + 'articleassessment-articlerating' => 'Priziadenn ar bajenn', |
| 171 | + 'articleassessment-thanks' => 'Trugarez! Ho priziadenn zo bet enrollet.', |
| 172 | + 'articleassessment-survey-answer-whyrated-other' => 'All', |
| 173 | + 'articleassessment-survey-question-useful-iffalse' => 'Perak ?', |
| 174 | + 'articleassessment-survey-submit' => 'Kas', |
| 175 | +); |
| 176 | + |
| 177 | +/** Bosnian (Bosanski) |
| 178 | + * @author CERminator |
| 179 | + */ |
| 180 | +$messages['bs'] = array( |
| 181 | + 'articleassessment-yourfeedback' => 'Vaše povratne informacije', |
| 182 | + 'articleassessment-submit' => 'Pošalji', |
| 183 | + 'articleassessment-rating-wellsourced' => 'Dobro referencirano:', |
| 184 | + 'articleassessment-rating-neutrality' => 'Neutralnost:', |
| 185 | + 'articleassessment-rating-completeness' => 'Završenost:', |
| 186 | + 'articleassessment-rating-readability' => 'Čitljivost:', |
| 187 | + 'articleassessment-articlerating' => 'Rejting stranice', |
| 188 | + 'articleassessment-error' => 'Desila se greška. |
| 189 | +Molimo pokušajte kasnije.', |
| 190 | + 'articleassessment-thanks' => 'Hvala! Vaše ocjene su sačuvane.', |
| 191 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|ocjena|ocjene|ocjena}})', |
| 192 | + 'articleassessment-results-show' => '(Rezultati sakriveni. <span class="showlink">Prikaži</span> ih.)', |
| 193 | + 'articleassessment-results-hide' => '(<span class="hidelink">Sakrij rezultate</span>)', |
| 194 | + 'articleassessment-survey-answer-whyrated-other' => 'Ostalo', |
| 195 | + 'articleassessment-survey-question-useful-iffalse' => 'Zašto?', |
| 196 | + 'articleassessment-survey-submit' => 'Pošalji', |
| 197 | +); |
| 198 | + |
| 199 | +/** German (Deutsch) |
| 200 | + * @author Kghbln |
| 201 | + */ |
| 202 | +$messages['de'] = array( |
| 203 | + 'articleassessment' => 'Artikeleinschätzung', |
| 204 | + 'articleassessment-desc' => 'Ermöglicht die Einschätzung von Artikeln (Pilotversion)', |
| 205 | + 'articleassessment-yourfeedback' => 'Deine Rückmeldung', |
| 206 | + 'articleassessment-pleaserate' => 'Bitte nehme dir kurz Zeit diesen Artikel unten auf dieser Seite einzuschätzen.', |
| 207 | + 'articleassessment-submit' => 'Speichern', |
| 208 | + 'articleassessment-rating-wellsourced' => 'Gut belegt:', |
| 209 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 210 | + 'articleassessment-rating-completeness' => 'Vollständig:', |
| 211 | + 'articleassessment-rating-readability' => 'Verständlich:', |
| 212 | + 'articleassessment-rating-wellsourced-tooltip' => 'Hast du den Eindruck, dass dieser Artikel über genügend Quellenangaben verfügt und diese zudem aus vertrauenswürdigen Quellen stammen?', |
| 213 | + 'articleassessment-rating-neutrality-tooltip' => 'Hast du den Eindruck, dass dieser Artikel eine ausgewogene Darstellung aller mit dessen Inhalt verbundenen Aspekte enthält?', |
| 214 | + 'articleassessment-rating-completeness-tooltip' => 'Hast du den Eindruck, dass dieser Artikel alle wichtigen Aspekte enthält, die mit dessen Inhalt zusammenhängen?', |
| 215 | + 'articleassessment-rating-readability-tooltip' => 'Hast du den Eindruck, dass dieser Artikel gut strukturiert sowie geschrieben wurde?', |
| 216 | + 'articleassessment-articlerating' => 'Einschätzung des Artikels', |
| 217 | + 'articleassessment-error' => 'Ein Fehler ist aufgetreten. |
| 218 | +Bitte versuche es später erneut.', |
| 219 | + 'articleassessment-thanks' => 'Vielen Dank! Deine Einschätzung wurde gespeichert.', |
| 220 | + 'articleassessment-featurefeedback' => 'Gebe uns bitte eine <span class="feedbacklink">Rückmeldung</span> zu dieser Funktion zur Einschätzung eines Artikels.', |
| 221 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|Einschätzung|Einschätzungen}})', |
| 222 | + 'articleassessment-stalemessage-norevisioncount' => "Dieser Artikel wurde seit deiner letzten Einschätzung ''bearbeitet''. |
| 223 | +Vielleicht möchtest du ihn erneut einschätzen.", |
| 224 | + 'articleassessment-results-show' => '(Ergebnisse sind ausgeblendet. <span class="showlink">Einblenden</span>.)', |
| 225 | + 'articleassessment-results-hide' => '(<span class="hidelink">Ergebnisse ausblenden</span>)', |
| 226 | + 'articleassessment-survey-question-whyrated' => 'Bitte lasse uns wissen, warum du diesen Artikel heute eingeschätzt hast (Zutreffendes bitte ankreuzen):', |
| 227 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Ich wollte mich an der Einschätzung des Artikels beteiligen', |
| 228 | + 'articleassessment-survey-answer-whyrated-development' => 'Ich hoffe, dass meine Einschätzung die künftige Entwicklung des Artikels positiv beeinflusst', |
| 229 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Ich wollte mich hier ({{SITENAME}}) beteiligen', |
| 230 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Ich teile meine Einschätzung gerne mit', |
| 231 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Ich habe heute keine Einschätzung vorgenommen, wollte allerdings eine Rückmeldung zu dieser Funktion zur Einschätzung des Artikels geben', |
| 232 | + 'articleassessment-survey-answer-whyrated-other' => 'Anderes', |
| 233 | + 'articleassessment-survey-question-useful' => 'Glaubst du, dass die abgegebenen Einschätzungen nützlich und verständlich sind?', |
| 234 | + 'articleassessment-survey-question-useful-iffalse' => 'Warum?', |
| 235 | + 'articleassessment-survey-question-expert' => 'Hältst du dich für kompetent auf dem Gebiet, mit dem sich der Inhalt dieses Artikels beschäftigt?', |
| 236 | + 'articleassessment-survey-question-expert-iftrue' => 'Kannst du deine Sachkenntnisse beschreiben?', |
| 237 | + 'articleassessment-survey-question-comments' => 'Hast du noch weitere Anmerkungen?', |
| 238 | + 'articleassessment-survey-submit' => 'Speichern', |
| 239 | + 'articleassessment-survey-title' => 'Bitte beantworte uns ein paar Fragen', |
| 240 | + 'articleassessment-survey-thanks' => 'Vielen Dank für deine Rückmeldung.', |
| 241 | +); |
| 242 | + |
| 243 | +/** French (Français) |
| 244 | + * @author Crochet.david |
| 245 | + * @author Peter17 |
| 246 | + */ |
| 247 | +$messages['fr'] = array( |
| 248 | + 'articleassessment' => 'Évaluation d’article', |
| 249 | + 'articleassessment-desc' => 'Évaluation d’article (version pilote)', |
| 250 | + 'articleassessment-yourfeedback' => 'Votre retour', |
| 251 | + 'articleassessment-pleaserate' => 'Veuillez prendre un moment pour évaluer cette page ci-dessous.', |
| 252 | + 'articleassessment-submit' => 'Soumettre', |
| 253 | + 'articleassessment-rating-wellsourced' => 'Bien sourcé :', |
| 254 | + 'articleassessment-rating-neutrality' => 'Neutre :', |
| 255 | + 'articleassessment-rating-completeness' => 'Complet :', |
| 256 | + 'articleassessment-rating-readability' => 'Lisible :', |
| 257 | + 'articleassessment-rating-wellsourced-tooltip' => 'Pensez-vous que cette page a suffisamment de citations et que celles-ci proviennent de sources dignes de confiance.', |
| 258 | + 'articleassessment-rating-neutrality-tooltip' => 'Pensez-vous que cette page fournit une présentation équitable de toutes les perspectives du sujet traité ?', |
| 259 | + 'articleassessment-rating-completeness-tooltip' => 'Pensez-vous que cette page couvre les thèmes essentiels du sujet ?', |
| 260 | + 'articleassessment-rating-readability-tooltip' => 'Pensez-vous que cette page soit bien organisée et bien écrite ?', |
| 261 | + 'articleassessment-articlerating' => 'Évaluation de la page', |
| 262 | + 'articleassessment-error' => 'Une erreur est survenue. |
| 263 | +Veuillez ré-essayer plus tard.', |
| 264 | + 'articleassessment-thanks' => 'Merci ! Votre évaluation a été enregistrée.', |
| 265 | + 'articleassessment-featurefeedback' => 'Donnez-nous vos <span class="feedbacklink">commentaires</span> sur cette fonctionnalité.', |
| 266 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|évaluation|évaluations}})', |
| 267 | + 'articleassessment-stalemessage-norevisioncount' => 'Cette page a été révisée depuis que vous l’avez évaluée. |
| 268 | +Vous pourriez vouloir l’évaluer à nouveau.', |
| 269 | + 'articleassessment-results-show' => '(Résultats masqués. <span class="showlink">Les afficher.</span>)', |
| 270 | + 'articleassessment-results-hide' => '(<span class="hidelink">Masquer les résultats</span>)', |
| 271 | + 'articleassessment-survey-question-whyrated' => 'Veuillez nous indiquer pourquoi vous avez évalué cette page aujourd’hui (cochez tout ce qui s’applique) :', |
| 272 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Je voulais contribuer à l’évaluation globale de la page', |
| 273 | + 'articleassessment-survey-answer-whyrated-development' => 'J’espère que mon évaluation aura une incidence positive sur le développement de la page', |
| 274 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Je voulais contribuer à {{SITENAME}}', |
| 275 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'J’aime partager mon opinion', |
| 276 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Je n’ai pas évalué la page, mais je voulais donner un retour sur cette fonctionnalité', |
| 277 | + 'articleassessment-survey-answer-whyrated-other' => 'Autre', |
| 278 | + 'articleassessment-survey-question-useful' => 'Pensez-vous que les évaluations fournies soient utiles et claires ?', |
| 279 | + 'articleassessment-survey-question-useful-iffalse' => 'Pourquoi ?', |
| 280 | + 'articleassessment-survey-question-expert' => 'Vous considérez-vous comme un expert dans le domaine couvert par cette page ?', |
| 281 | + 'articleassessment-survey-question-expert-iftrue' => 'Pouvez-vous décrire votre expertise ?', |
| 282 | + 'articleassessment-survey-question-comments' => 'Avez-vous d’autres commentaires ?', |
| 283 | + 'articleassessment-survey-submit' => 'Soumettre', |
| 284 | + 'articleassessment-survey-title' => 'Veuillez répondre à quelques questions', |
| 285 | + 'articleassessment-survey-thanks' => 'Merci d’avoir rempli le questionnaire.', |
| 286 | +); |
| 287 | + |
| 288 | +/** Galician (Galego) |
| 289 | + * @author Toliño |
| 290 | + */ |
| 291 | +$messages['gl'] = array( |
| 292 | + 'articleassessment' => 'Avaliación do artigo', |
| 293 | + 'articleassessment-desc' => 'Versión piloto da avaliación dos artigos', |
| 294 | + 'articleassessment-yourfeedback' => 'Os seus comentarios', |
| 295 | + 'articleassessment-pleaserate' => 'Por favor, tome uns intres para avaliar esta páxina.', |
| 296 | + 'articleassessment-submit' => 'Enviar', |
| 297 | + 'articleassessment-rating-wellsourced' => 'Ben documentado:', |
| 298 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 299 | + 'articleassessment-rating-completeness' => 'Completo:', |
| 300 | + 'articleassessment-rating-readability' => 'Lexible:', |
| 301 | + 'articleassessment-rating-wellsourced-tooltip' => 'Cre que esta páxina ten citas suficientes e que estas son de fontes fiables?', |
| 302 | + 'articleassessment-rating-neutrality-tooltip' => 'Cre que esta páxina mostra unha representación xusta de todas as perspectivas do tema?', |
| 303 | + 'articleassessment-rating-completeness-tooltip' => 'Cre que esta páxina aborda as áreas esenciais do tema que debería?', |
| 304 | + 'articleassessment-rating-readability-tooltip' => 'Cre que esta páxina está ben organizada e escrita?', |
| 305 | + 'articleassessment-articlerating' => 'Avaliación do artigo', |
| 306 | + 'articleassessment-error' => 'Houbo un erro. |
| 307 | +Inténteo de novo máis tarde.', |
| 308 | + 'articleassessment-thanks' => 'Grazas! Gardáronse as súas valoracións.', |
| 309 | + 'articleassessment-featurefeedback' => 'Déanos <span class="feedbacklink">a súa opinión</span> sobre esta característica.', |
| 310 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|avaliación|avaliacións}})', |
| 311 | + 'articleassessment-stalemessage-norevisioncount' => "Alguén fixo unha ''revisión'' da páxina desde a súa última visita. |
| 312 | +Quizais queira avaliala novamente.", |
| 313 | + 'articleassessment-results-show' => '(Resultados agochados. <span class="showlink">Mostralos</span>.)', |
| 314 | + 'articleassessment-results-hide' => '(<span class="hidelink">Agochar os resultados</span>)', |
| 315 | + 'articleassessment-survey-question-whyrated' => 'Díganos por que valorou esta páxina (marque todas as opcións que cumpran):', |
| 316 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Quería colaborar na valoración da páxina', |
| 317 | + 'articleassessment-survey-answer-whyrated-development' => 'Agardo que a miña valoración afecte positivamente ao desenvolvemento da páxina', |
| 318 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Quería colaborar con {{SITENAME}}', |
| 319 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Gústame dar a miña opinión', |
| 320 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Non dei ningunha valoración, só quería deixar os meus comentarios sobre a característica', |
| 321 | + 'articleassessment-survey-answer-whyrated-other' => 'Outra', |
| 322 | + 'articleassessment-survey-question-useful' => 'Cre que as valoracións dadas son útiles e claras?', |
| 323 | + 'articleassessment-survey-question-useful-iffalse' => 'Por que?', |
| 324 | + 'articleassessment-survey-question-expert' => 'Considérase un experto no campo que abrangue esta páxina?', |
| 325 | + 'articleassessment-survey-question-expert-iftrue' => 'Pode describir a súa experiencia?', |
| 326 | + 'articleassessment-survey-question-comments' => 'Ten algún comentario adicional?', |
| 327 | + 'articleassessment-survey-submit' => 'Enviar', |
| 328 | + 'articleassessment-survey-title' => 'Responda algunhas preguntas', |
| 329 | + 'articleassessment-survey-thanks' => 'Grazas por encher a enquisa.', |
| 330 | +); |
| 331 | + |
| 332 | +/** Interlingua (Interlingua) |
| 333 | + * @author McDutchie |
| 334 | + */ |
| 335 | +$messages['ia'] = array( |
| 336 | + 'articleassessment' => 'Evalutation de articulos', |
| 337 | + 'articleassessment-desc' => 'Evalutation de articulos (version pilota)', |
| 338 | + 'articleassessment-yourfeedback' => 'Tu opinion', |
| 339 | + 'articleassessment-pleaserate' => 'Per favor prende un momento pro evalutar iste pagina hic infra.', |
| 340 | + 'articleassessment-submit' => 'Submitter', |
| 341 | + 'articleassessment-rating-wellsourced' => 'Ben referentiate:', |
| 342 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 343 | + 'articleassessment-rating-completeness' => 'Complete:', |
| 344 | + 'articleassessment-rating-readability' => 'Legibile:', |
| 345 | + 'articleassessment-rating-wellsourced-tooltip' => 'Pensa tu que iste articulo ha sufficiente citationes e que iste citationes refere a fontes digne de fide?', |
| 346 | + 'articleassessment-rating-neutrality-tooltip' => 'Pensa tu que iste articulo monstra un representation juste de tote le perspectivas super le question?', |
| 347 | + 'articleassessment-rating-completeness-tooltip' => 'Pensa tu que iste articulo coperi le themas essential que illo deberea coperir?', |
| 348 | + 'articleassessment-rating-readability-tooltip' => 'Pensa tu que iste articulo es ben organisate e ben scribite?', |
| 349 | + 'articleassessment-articlerating' => 'Evalutation del articulo', |
| 350 | + 'articleassessment-error' => 'Un error ha occurrite. |
| 351 | +Per favor reproba plus tarde.', |
| 352 | + 'articleassessment-thanks' => 'Gratias! Tu evalutation ha essite salveguardate.', |
| 353 | + 'articleassessment-featurefeedback' => 'Da nos [[Special:Article Assessment Feedback|tu opinion]] super iste functionalitate.', |
| 354 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|evalutation|evalutationes}})', |
| 355 | + 'articleassessment-stalemessage-norevisioncount' => "Iste articulo ha essite ''re-elaborate'' post tu ultime evalutation. |
| 356 | +Es recommendate que tu lo re-evaluta.", |
| 357 | + 'articleassessment-results-show' => '(Resultatos celate. <span class="showlink">Revelar</span> los.)', |
| 358 | + 'articleassessment-results-hide' => '(<span class="hidelink">Celar resultatos</span>)', |
| 359 | + 'articleassessment-survey-question-whyrated' => 'Per favor dice nos proque tu ha evalutate iste pagina hodie (marca tote le optiones applicabile):', |
| 360 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Io voleva contribuer al evalutation general del pagina', |
| 361 | + 'articleassessment-survey-answer-whyrated-development' => 'Io spera que mi evalutation ha un effecto positive sur le disveloppamento del pagina', |
| 362 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Io voleva contribuer a {{SITENAME}}', |
| 363 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Me place condivider mi opinion', |
| 364 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Io non dava un evalutation hodie, ma io voleva dar mi opinion super le functionalitate', |
| 365 | + 'articleassessment-survey-answer-whyrated-other' => 'Altere', |
| 366 | + 'articleassessment-survey-question-useful' => 'Crede tu que le evalutationes providite es utile e clar?', |
| 367 | + 'articleassessment-survey-question-useful-iffalse' => 'Proque?', |
| 368 | + 'articleassessment-survey-question-expert' => 'Esque tu te considera un experto in le campo que iste pagina coperi?', |
| 369 | + 'articleassessment-survey-question-expert-iftrue' => 'Pote tu describer tu expertise?', |
| 370 | + 'articleassessment-survey-question-comments' => 'Ha tu additional commentos?', |
| 371 | + 'articleassessment-survey-submit' => 'Submitter', |
| 372 | + 'articleassessment-survey-title' => 'Per favor responde a alcun questiones', |
| 373 | + 'articleassessment-survey-thanks' => 'Gratias pro completar le questionario.', |
| 374 | +); |
| 375 | + |
| 376 | +/** Japanese (日本語) |
| 377 | + * @author Marine-Blue |
| 378 | + * @author Yanajin66 |
| 379 | + * @author 青子守歌 |
| 380 | + */ |
| 381 | +$messages['ja'] = array( |
| 382 | + 'articleassessment' => '記事の評価', |
| 383 | + 'articleassessment-desc' => '記事の評価(パイロット版)', |
| 384 | + 'articleassessment-yourfeedback' => 'あなたのフィードバック', |
| 385 | + 'articleassessment-pleaserate' => 'このページの評価を算出していますので、少しお待ちください。', |
| 386 | + 'articleassessment-submit' => '送信', |
| 387 | + 'articleassessment-rating-wellsourced' => '良くソース化できたもの:', |
| 388 | + 'articleassessment-rating-neutrality' => '中立的なもの:', |
| 389 | + 'articleassessment-rating-completeness' => '完了:', |
| 390 | + 'articleassessment-rating-readability' => '読み込み可能なもの:', |
| 391 | + 'articleassessment-rating-wellsourced-tooltip' => 'あなたはこの記事が十分な引用を含んでいて、それらの引用は信憑性のあるソースからのものだと感じますか?', |
| 392 | + 'articleassessment-rating-neutrality-tooltip' => 'あなたはこの記事が問題点における全ての見解の中で公正な表現だと感じますか?', |
| 393 | + 'articleassessment-rating-completeness-tooltip' => 'あなたはこの記事が不可欠な話題の領域をカバーしていると感じますか?', |
| 394 | + 'articleassessment-rating-readability-tooltip' => 'あなたはこの記事が良く整理され、良く書かれていると感じますか?', |
| 395 | + 'articleassessment-articlerating' => '記事の評価', |
| 396 | + 'articleassessment-error' => 'エラーが発生しました。 |
| 397 | +後でもう一度試みてください。', |
| 398 | + 'articleassessment-thanks' => 'ありがとうございます!あなたの評価は保存されました。', |
| 399 | + 'articleassessment-featurefeedback' => 'この機能について<span class="feedbacklink">フォードバック</span>をお願いします。', |
| 400 | + 'articleassessment-noratings' => '$1($2の{{PLURAL:$2|評価}})', |
| 401 | + 'articleassessment-stalemessage-norevisioncount' => "この記事はあなたが最後にレビューしてから、''修正''されました。 |
| 402 | +再度レビューしたほうが良いかもしれません。", |
| 403 | + 'articleassessment-results-show' => '(結果は隠されています。<span class="showlink">表示</span>する。)', |
| 404 | + 'articleassessment-results-hide' => '(<span class="hidelink">結果を隠す</span>)', |
| 405 | + 'articleassessment-survey-question-whyrated' => '今日、なぜあなたがこのページを評価したか我々に教えてください(適用するすべてにチェックを入れてください):', |
| 406 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => '私はページの全ての評価に貢献したいです', |
| 407 | + 'articleassessment-survey-answer-whyrated-development' => '私は自分の評価が積極的にこのページの開発に影響を与えることを希望している', |
| 408 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => '私は{{サイト名}}に貢献したい', |
| 409 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'I like sharing my opinion', |
| 410 | + 'articleassessment-survey-answer-whyrated-didntrate' => '私は今日はレーティングを提供しなかったが、この機能に関するフィードバックを提供したかった', |
| 411 | + 'articleassessment-survey-answer-whyrated-other' => 'その他', |
| 412 | + 'articleassessment-survey-question-useful' => 'あなたはこれらの評価が有用で明確だと信じていますか?', |
| 413 | + 'articleassessment-survey-question-useful-iffalse' => 'なぜですか?', |
| 414 | + 'articleassessment-survey-question-expert' => 'あなたは自分自身がこのページが扱う領域の専門家だと思いますか?', |
| 415 | + 'articleassessment-survey-question-expert-iftrue' => 'あなたは専門知識を述べることができますか?', |
| 416 | + 'articleassessment-survey-question-comments' => 'あなたには追加すべきコメントがありますか?', |
| 417 | + 'articleassessment-survey-submit' => '送信', |
| 418 | + 'articleassessment-survey-title' => '質問に少し答えてください', |
| 419 | + 'articleassessment-survey-thanks' => '調査に記入していただき、ありがとうございます。', |
| 420 | +); |
| 421 | + |
| 422 | +/** Luxembourgish (Lëtzebuergesch) |
| 423 | + * @author Robby |
| 424 | + */ |
| 425 | +$messages['lb'] = array( |
| 426 | + 'articleassessment' => 'Artikelaschätzung', |
| 427 | + 'articleassessment-desc' => 'Artikelaschätzung Pilotversioun', |
| 428 | + 'articleassessment-yourfeedback' => 'Äre Feedback', |
| 429 | + 'articleassessment-pleaserate' => 'Huelt Iech w.e.g. een Ament fir déi Säit hei drënner ze bewäerten.', |
| 430 | + 'articleassessment-submit' => 'Späicheren', |
| 431 | + 'articleassessment-rating-wellsourced' => 'Gudd dokumentéiert:', |
| 432 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 433 | + 'articleassessment-rating-completeness' => 'Komplett:', |
| 434 | + 'articleassessment-rating-readability' => 'Verständlech:', |
| 435 | + 'articleassessment-rating-wellsourced-tooltip' => 'Hutt Dir den Androck datt dës Säit genuch Zitater huet an datt dës Zitater aus vertrauenswierdege Quelle kommen?', |
| 436 | + 'articleassessment-rating-neutrality-tooltip' => 'Hutt Dir den Androck datt dës Säit eng ausgeglache Presentatioun vun alle Perspektive vun dësem Thema weist?', |
| 437 | + 'articleassessment-rating-completeness-tooltip' => 'Hutt dir den Androck datt dës Säit déi wesentlech Aspekter vun dësem Sujet behandelt déi solle beliicht ginn?', |
| 438 | + 'articleassessment-rating-readability-tooltip' => 'Hutt Dir den Androck datt dës Säit gutt organiséiert a gutt geschriwwen ass?', |
| 439 | + 'articleassessment-articlerating' => 'Bewäertung vum Artikel', |
| 440 | + 'articleassessment-error' => 'Et ass e Feeler geschitt. |
| 441 | +Probéiert w.e.g. méi spéit nach emol.', |
| 442 | + 'articleassessment-thanks' => 'Merci! Är Bewäertung gouf gespäichert.', |
| 443 | + 'articleassessment-featurefeedback' => 'Gitt eis Äre [[Special:Article Assessment Feedback|Feedback]] vun dëser Fonctioun.', |
| 444 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|Bewäertung|Bewäertungen}})', |
| 445 | + 'articleassessment-stalemessage-norevisioncount' => "Dësen Artikel gouf zënter datt Dir e fir d'lescht nogekuckt hutt ''verännert''. |
| 446 | +Et kéint sinn datt dir en nei bewäerte wëllt.", |
| 447 | + 'articleassessment-results-show' => '(D\'Resultater si verstopp. Resultater <span class="showlink">weisen</span>.)', |
| 448 | + 'articleassessment-results-hide' => '(<span class="hidelink">Resultater verstoppen</span>)', |
| 449 | + 'articleassessment-survey-question-whyrated' => 'Sot eis w.e.g. firwat datt Dir dës säit bewäert hutt (klickt alles u wat zoutrëfft):', |
| 450 | + 'articleassessment-survey-answer-whyrated-other' => 'Anerer', |
| 451 | + 'articleassessment-survey-question-useful-iffalse' => 'Firwat?', |
| 452 | + 'articleassessment-survey-title' => 'Beäntwert w.e.g. e puer Froen', |
| 453 | +); |
| 454 | + |
| 455 | +/** Macedonian (Македонски) |
| 456 | + * @author Bjankuloski06 |
| 457 | + */ |
| 458 | +$messages['mk'] = array( |
| 459 | + 'articleassessment' => 'Оценување на статија', |
| 460 | + 'articleassessment-desc' => 'Пилотна верзија на Оценување на статија', |
| 461 | + 'articleassessment-yourfeedback' => 'Ваше мислење', |
| 462 | + 'articleassessment-pleaserate' => 'Одвојте момент за да ја оцените страницава подолу', |
| 463 | + 'articleassessment-submit' => 'Поднеси', |
| 464 | + 'articleassessment-rating-wellsourced' => 'Доволно извори:', |
| 465 | + 'articleassessment-rating-neutrality' => 'Неутрална:', |
| 466 | + 'articleassessment-rating-completeness' => 'Исцрпна:', |
| 467 | + 'articleassessment-rating-readability' => 'Читлива:', |
| 468 | + 'articleassessment-rating-wellsourced-tooltip' => 'Дали сметате дека статијава има доволно наводи и дека се преземени од доверливи извори?', |
| 469 | + 'articleassessment-rating-neutrality-tooltip' => 'Дали сметате дека статијава на праведен начин ги застапува сите гледишта на оваа проблематика?', |
| 470 | + 'articleassessment-rating-completeness-tooltip' => 'Дали сметате дека статијава ги обработува најважните основни теми што треба да се обработат?', |
| 471 | + 'articleassessment-rating-readability-tooltip' => 'Дали сметате дека статијава е добро организирана и убаво напишана?', |
| 472 | + 'articleassessment-articlerating' => 'Оценки за статијата', |
| 473 | + 'articleassessment-error' => 'Се појави грешка. |
| 474 | +Обидете се подоцна.', |
| 475 | + 'articleassessment-thanks' => 'Ви благодариме! Вашите оценки се зачувани.', |
| 476 | + 'articleassessment-featurefeedback' => 'Дајте ваше <span class="feedbacklink">мислење</span> за оваа функција.', |
| 477 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|оценка|оценки}})', |
| 478 | + 'articleassessment-stalemessage-norevisioncount' => "Статијава е ''преработена'' од последниот преглеед наваму. |
| 479 | +Ви предлагаме да ја преоцените.", |
| 480 | + 'articleassessment-results-show' => '(Резултатите се скриени. <span class="showlink">Прикажи</span> ги.)', |
| 481 | + 'articleassessment-results-hide' => '(<span class="hidelink">Сокриј резултати</span>)', |
| 482 | + 'articleassessment-survey-question-whyrated' => 'Кажете ни зошто ја оценивте страницава денес (штиклирајте ги сите релевантни одговори)', |
| 483 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Сакав да придонесам кон севкупната оцена на страницата', |
| 484 | + 'articleassessment-survey-answer-whyrated-development' => 'Се надевам дека мојата оценка ќе влијае позитивно на развојот на страницата', |
| 485 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Сакав да придонесам кон {{SITENAME}}', |
| 486 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Сакам да го искажувам моето мислење', |
| 487 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Не оценував денес, туку сакав да искажам мое мислење за функцијата', |
| 488 | + 'articleassessment-survey-answer-whyrated-other' => 'Друго', |
| 489 | + 'articleassessment-survey-question-useful' => 'Дали сметате дека дадените оценки се полезни и јасни?', |
| 490 | + 'articleassessment-survey-question-useful-iffalse' => 'Зошто?', |
| 491 | + 'articleassessment-survey-question-expert' => 'Дали се сметате за стручњак во тематиката што се обработува на страницава?', |
| 492 | + 'articleassessment-survey-question-expert-iftrue' => 'Можете ли да ги опишете вашите стручни познавања?', |
| 493 | + 'articleassessment-survey-question-comments' => 'Имате некои други забелешки?', |
| 494 | + 'articleassessment-survey-submit' => 'Поднеси', |
| 495 | + 'articleassessment-survey-title' => 'Ве молиме одговорете на неколку прашања', |
| 496 | + 'articleassessment-survey-thanks' => 'Ви благодариме што ја пополнивте анкетата.', |
| 497 | +); |
| 498 | + |
| 499 | +/** Dutch (Nederlands) |
| 500 | + * @author Siebrand |
| 501 | + */ |
| 502 | +$messages['nl'] = array( |
| 503 | + 'articleassessment' => 'Paginabeoordeling', |
| 504 | + 'articleassessment-desc' => 'Paginabeoordeling (testversie)', |
| 505 | + 'articleassessment-yourfeedback' => 'Uw terugkoppeling', |
| 506 | + 'articleassessment-pleaserate' => 'Geef alstublieft een beoordeling van deze pagina.', |
| 507 | + 'articleassessment-submit' => 'Opslaan', |
| 508 | + 'articleassessment-rating-wellsourced' => 'Goed van bronnen voorzien:', |
| 509 | + 'articleassessment-rating-neutrality' => 'Neutraal:', |
| 510 | + 'articleassessment-rating-completeness' => 'Compleet:', |
| 511 | + 'articleassessment-rating-readability' => 'Leesbaar:', |
| 512 | + 'articleassessment-rating-wellsourced-tooltip' => 'Vindt u dat deze pagina voldoende bronvermeldingen heeft en dat de bronvermeldingen betrouwbaar zijn?', |
| 513 | + 'articleassessment-rating-neutrality-tooltip' => 'Vindt u dat deze pagina een eerlijke weergave is van alle invalshoeken voor dit onderwerp?', |
| 514 | + 'articleassessment-rating-completeness-tooltip' => 'Vindt u dat deze pagina de essentie van dit onderwerp bestrijkt?', |
| 515 | + 'articleassessment-rating-readability-tooltip' => 'Vindt u dat deze pagina een correcte opbouw heeft een goed is geschreven?', |
| 516 | + 'articleassessment-articlerating' => 'Paginawaardering', |
| 517 | + 'articleassessment-error' => 'Er is een fout opgetreden. |
| 518 | +Probeer het later opnieuw.', |
| 519 | + 'articleassessment-thanks' => 'Bedankt! |
| 520 | +Uw beoordeling is opgeslagen.', |
| 521 | + 'articleassessment-featurefeedback' => 'Geef ons [[Special:ArticleAssessmentFeedback|terugkoppeling]] over deze functie.', |
| 522 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|beoordeling|beoordelingen}})', |
| 523 | + 'articleassessment-stalemessage-norevisioncount' => "Deze pagina is ''aangepast'' sinds uw beoordeling. |
| 524 | +Wilt u de pagina opnieuw beoordelen?", |
| 525 | + 'articleassessment-results-show' => '(<span class="showlink">resultaten weergeven</span>)', |
| 526 | + 'articleassessment-results-hide' => '(<span class="hidelink">resultaten verbergen</span>)', |
| 527 | + 'articleassessment-survey-question-whyrated' => 'Laat ons weten waarom u deze pagina vandaag hebt beoordeeld (kies alle redenen die van toepassing zijn):', |
| 528 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Ik wil bijdragen aan de beoordelingen van de pagina', |
| 529 | + 'articleassessment-survey-answer-whyrated-development' => 'Ik hoop dat mijn beoordeling een positief effect heeft op de ontwikkeling van de pagina', |
| 530 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Ik wilde bijdragen aan {{SITENAME}}', |
| 531 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Ik vind het fijn om mijn mening te delen', |
| 532 | + 'articleassessment-survey-answer-whyrated-didntrate' => "Ik heb vandaag geen pagina's beoordeeld, maar in de toekomst wil ik wel terugkoppeling geven", |
| 533 | + 'articleassessment-survey-answer-whyrated-other' => 'Anders', |
| 534 | + 'articleassessment-survey-question-useful' => 'Vindt u dat de beoordelingen bruikbaar en duidelijk zijn?', |
| 535 | + 'articleassessment-survey-question-useful-iffalse' => 'Waarom?', |
| 536 | + 'articleassessment-survey-question-expert' => 'Vindt u zichzelf een expert in de materie waarover deze pagina gaat?', |
| 537 | + 'articleassessment-survey-question-expert-iftrue' => 'Kunt u uw expertise beschrijven?', |
| 538 | + 'articleassessment-survey-question-comments' => 'Hebt u nog opmerkingen?', |
| 539 | + 'articleassessment-survey-submit' => 'Opslaan', |
| 540 | + 'articleassessment-survey-title' => 'Beantwoord alstublieft een paar vragen', |
| 541 | + 'articleassessment-survey-thanks' => 'Bedankt voor het beantwoorden van de vragen.', |
| 542 | +); |
| 543 | + |
| 544 | +/** Polish (Polski) |
| 545 | + * @author Sp5uhe |
| 546 | + */ |
| 547 | +$messages['pl'] = array( |
| 548 | + 'articleassessment' => 'Ocena artykułu', |
| 549 | + 'articleassessment-desc' => 'Ocena artykułu (wersja pilotażowa)', |
| 550 | + 'articleassessment-yourfeedback' => 'Twoja opinia', |
| 551 | + 'articleassessment-pleaserate' => 'Poświeć chwilę, aby ocenić poniższą stronę.', |
| 552 | + 'articleassessment-submit' => 'Zapisz', |
| 553 | + 'articleassessment-rating-wellsourced' => 'Dobre źródła', |
| 554 | + 'articleassessment-rating-neutrality' => 'Neutralny punkt widzenia', |
| 555 | + 'articleassessment-rating-completeness' => 'Wyczerpanie tematu', |
| 556 | + 'articleassessment-rating-readability' => 'Zrozumiałość', |
| 557 | + 'articleassessment-rating-wellsourced-tooltip' => 'Czy uważasz, że strona ma wystarczającą liczbę odnośników i że odnoszą się one do wiarygodnych źródeł?', |
| 558 | + 'articleassessment-rating-neutrality-tooltip' => 'Czy uważasz, że strona prezentuje wszystkie punkty widzenia na to zagadnienie?', |
| 559 | + 'articleassessment-rating-completeness-tooltip' => 'Czy uważasz, że strona porusza wszystkie istotne aspekty, które powinna?', |
| 560 | + 'articleassessment-rating-readability-tooltip' => 'Czy uważasz, że strona jest poprawnie sformatowana oraz zrozumiale napisana?', |
| 561 | + 'articleassessment-articlerating' => 'Ocena strony', |
| 562 | + 'articleassessment-error' => 'Wystąpił błąd. |
| 563 | +Spróbuj ponownie później.', |
| 564 | + 'articleassessment-thanks' => 'Wystawiona przez Ciebie ocena została zapisana.', |
| 565 | + 'articleassessment-featurefeedback' => '<span class="feedbacklink">Napisz do autorów</span> co myślisz o tym rozszerzeniu.', |
| 566 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|ocena|oceny|ocen}})', |
| 567 | + 'articleassessment-stalemessage-norevisioncount' => "Strona została ''zmieniona'' od czasu, gdy ją oceniałeś. |
| 568 | +Możesz ocenić ją ponownie.", |
| 569 | + 'articleassessment-results-show' => '(Wyniki ukryte. <span class="showlink">Pokaż</span> je.)', |
| 570 | + 'articleassessment-results-hide' => '(<span class="hidelink">Ukryj wyniki</span>)', |
| 571 | + 'articleassessment-survey-question-whyrated' => 'Dlaczego oceniłeś dziś tę stronę (zaznacz wszystkie pasujące):', |
| 572 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Chciałem mieć wpływ na ogólną ocenę strony', |
| 573 | + 'articleassessment-survey-answer-whyrated-development' => 'Mam nadzieję, że moja ocena pozytywnie wpłynie na rozwój strony', |
| 574 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Chciałem mieć swój wkład w rozwój {{GRAMMAR:D.lp|{{SITENAME}}}}', |
| 575 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Lubię dzielić się swoją opinią', |
| 576 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Nie oceniałem dziś, ale chcę podzielić się swoją opinią na temat tego rozszerzenia', |
| 577 | + 'articleassessment-survey-answer-whyrated-other' => 'Inny powód', |
| 578 | + 'articleassessment-survey-question-useful' => 'Czy uważasz, że taka metoda oceniania jest użyteczna i czytelna?', |
| 579 | + 'articleassessment-survey-question-useful-iffalse' => 'Dlaczego?', |
| 580 | + 'articleassessment-survey-question-expert' => 'Czy uważasz się za eksperta w tematyce, którą porusza ta strona?', |
| 581 | + 'articleassessment-survey-question-expert-iftrue' => 'Czy możesz opisać swój poziom wiedzy?', |
| 582 | + 'articleassessment-survey-question-comments' => 'Czy masz jakieś dodatkowe uwagi?', |
| 583 | + 'articleassessment-survey-submit' => 'Zapisz', |
| 584 | + 'articleassessment-survey-title' => 'Proszę udzielić odpowiedzi na kilka pytań', |
| 585 | + 'articleassessment-survey-thanks' => 'Dziękujemy za wypełnienie ankiety.', |
| 586 | +); |
| 587 | + |
| 588 | +/** Piedmontese (Piemontèis) |
| 589 | + * @author Dragonòt |
| 590 | + */ |
| 591 | +$messages['pms'] = array( |
| 592 | + 'articleassessment' => "Valutassion ëd j'artìcoj", |
| 593 | + 'articleassessment-desc' => "Vërsion pilòta dla valutassion ëd j'artìcoj", |
| 594 | + 'articleassessment-yourfeedback' => 'Tò artorn', |
| 595 | + 'articleassessment-pleaserate' => 'Për piasì pija un moment për valuté sta pàgina sota.', |
| 596 | + 'articleassessment-submit' => 'Spediss', |
| 597 | + 'articleassessment-rating-wellsourced' => 'Bon-e-Sorgiss:', |
| 598 | + 'articleassessment-rating-neutrality' => 'Neutral:', |
| 599 | + 'articleassessment-rating-completeness' => 'Completa:', |
| 600 | + 'articleassessment-rating-readability' => 'Lesìbil:', |
| 601 | + 'articleassessment-rating-wellsourced-tooltip' => "Pensës-to che sto artìcol a l'abia basta citassion e che ste citassion a rivo da sorziss sigure?", |
| 602 | + 'articleassessment-rating-neutrality-tooltip' => 'Pensës-to che sto artìcol a mosta na giusta rapresentassion ëd tute le prospetive ant sua edission?', |
| 603 | + 'articleassessment-rating-completeness-tooltip' => "Pensës-to che sto artìcol a coata le aire essensial ëd l'argoment com a dovrìa?", |
| 604 | + 'articleassessment-rating-readability-tooltip' => 'Pensës-to che sto artìcol a sia bin-organisà e bin scrivù?', |
| 605 | + 'articleassessment-articlerating' => "Valutassion ëd l'artìcol", |
| 606 | + 'articleassessment-error' => "Un eror a l'é capità. |
| 607 | +Për piasì preuva torna pi tard.", |
| 608 | + 'articleassessment-thanks' => 'Mersì! Toe valutassion a son ëstàite salvà.', |
| 609 | + 'articleassessment-featurefeedback' => 'Dane <span class="feedbacklink">artorn</span> a propòsit dë sta funsion.', |
| 610 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|valutassion|valutassion}})', |
| 611 | + 'articleassessment-stalemessage-norevisioncount' => "Sto artìcol a l'é stàit ''revisionà'' da quand ch'it l'has revisionalo. |
| 612 | +It podrìe vorejlo revaluté.", |
| 613 | + 'articleassessment-results-show' => '(Arzultà stërmà. <span class="showlink">Mostlo</span>.)', |
| 614 | + 'articleassessment-results-hide' => '(<span class="hidelink">Stërma arzultà</span>)', |
| 615 | + 'articleassessment-survey-question-whyrated' => "Për piasì fane savèj përchè it l'has valutà sta pàgina ancheuj (signa tut lòn ch'a centra):", |
| 616 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'I veui contribuì a la valutassin antera dla pàgina', |
| 617 | + 'articleassessment-survey-answer-whyrated-development' => 'I sper che mia valutassion a peussa toché positivament ël dësvilup ëd la pàgina', |
| 618 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'I veui contribuì a {{SITENAME}}', |
| 619 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Am pias condivide mia opinion', |
| 620 | + 'articleassessment-survey-answer-whyrated-didntrate' => "I l'heu pa dàit valutassion ancheuj, ma i veui dé d'artorn an sla funsion", |
| 621 | + 'articleassessment-survey-answer-whyrated-other' => 'Àutr', |
| 622 | + 'articleassessment-survey-question-useful' => 'Chërdës-to che le valutassion dàite a sio ùtij e ciàire?', |
| 623 | + 'articleassessment-survey-question-useful-iffalse' => 'Përchè?', |
| 624 | + 'articleassessment-survey-question-expert' => "Considërës-to ti midem n'espert ant ël camp che sta pàgina a coata?", |
| 625 | + 'articleassessment-survey-question-expert-iftrue' => 'Peuss-to descrive toa esperiensa?', |
| 626 | + 'articleassessment-survey-question-comments' => "L'has-to quaich coment adissionaj?", |
| 627 | + 'articleassessment-survey-submit' => 'Spediss', |
| 628 | + 'articleassessment-survey-title' => 'Për piasì arspond a quaich custion', |
| 629 | + 'articleassessment-survey-thanks' => 'Mersì për avej vempì ël questionari.', |
| 630 | +); |
| 631 | + |
| 632 | +/** Portuguese (Português) |
| 633 | + * @author Giro720 |
| 634 | + * @author Hamilton Abreu |
| 635 | + * @author Waldir |
| 636 | + */ |
| 637 | +$messages['pt'] = array( |
| 638 | + 'articleassessment' => 'Avaliação do artigo', |
| 639 | + 'articleassessment-desc' => 'Avaliação do artigo (versão de testes)', |
| 640 | + 'articleassessment-yourfeedback' => 'Os seus comentários', |
| 641 | + 'articleassessment-pleaserate' => 'Dedique um momento a avaliar esta página abaixo, por favor.', |
| 642 | + 'articleassessment-submit' => 'Enviar', |
| 643 | + 'articleassessment-rating-wellsourced' => 'Bem referenciado:', |
| 644 | + 'articleassessment-rating-neutrality' => 'Neutro:', |
| 645 | + 'articleassessment-rating-completeness' => 'Completo:', |
| 646 | + 'articleassessment-rating-readability' => 'Fácil de ler:', |
| 647 | + 'articleassessment-rating-wellsourced-tooltip' => 'Considera que esta página tem citações suficientes e que essas citações provêm de fontes fiáveis?', |
| 648 | + 'articleassessment-rating-neutrality-tooltip' => 'Acha que esta página representa, de forma equilibrada, todos os pontos de vista sobre o assunto?', |
| 649 | + 'articleassessment-rating-completeness-tooltip' => 'Considera que esta página aborda os temas essenciais que deviam ser cobertos?', |
| 650 | + 'articleassessment-rating-readability-tooltip' => 'Acha que esta página está bem organizada e bem escrita?', |
| 651 | + 'articleassessment-articlerating' => 'Avaliação da página', |
| 652 | + 'articleassessment-error' => 'Ocorreu um erro. |
| 653 | +Tente novamente mais tarde, por favor.', |
| 654 | + 'articleassessment-thanks' => 'Obrigado! As suas avaliações foram gravadas.', |
| 655 | + 'articleassessment-featurefeedback' => 'Envie-nos os seus <span class="feedbacklink">comentários</span> sobre esta funcionalidade.', |
| 656 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|avaliação|avaliações}})', |
| 657 | + 'articleassessment-stalemessage-norevisioncount' => "Esta página foi ''alterada'' desde a sua última revisão. |
| 658 | +Talvez queira voltar a avaliá-la.", |
| 659 | + 'articleassessment-results-show' => '(Resultados ocultados. <span class="showlink">Mostrá-los</span>.)', |
| 660 | + 'articleassessment-results-hide' => '(<span class="hidelink">Ocultar os resultados</span>)', |
| 661 | + 'articleassessment-survey-question-whyrated' => 'Diga-nos porque é que classificou esta página hoje (marque todas as opções verdadeiras):', |
| 662 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Queria contribuir para a classificação global da página', |
| 663 | + 'articleassessment-survey-answer-whyrated-development' => 'Espero que a minha classificação afecte positivamente o desenvolvimento da página', |
| 664 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Queria colaborar com a {{SITENAME}}', |
| 665 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Gosto de dar a minha opinião', |
| 666 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Hoje não classifiquei páginas, mas queria deixar o meu comentário sobre a funcionalidade', |
| 667 | + 'articleassessment-survey-answer-whyrated-other' => 'Outra', |
| 668 | + 'articleassessment-survey-question-useful' => 'Acredita que as classificações dadas são úteis e claras?', |
| 669 | + 'articleassessment-survey-question-useful-iffalse' => 'Porquê?', |
| 670 | + 'articleassessment-survey-question-expert' => 'Considera-se um perito na área descrita nesta página?', |
| 671 | + 'articleassessment-survey-question-expert-iftrue' => 'Pode descrever a sua experiência?', |
| 672 | + 'articleassessment-survey-question-comments' => 'Tem mais comentários?', |
| 673 | + 'articleassessment-survey-submit' => 'Enviar', |
| 674 | + 'articleassessment-survey-title' => 'Por favor, responda a algumas perguntas', |
| 675 | + 'articleassessment-survey-thanks' => 'Obrigado por preencher o inquérito.', |
| 676 | +); |
| 677 | + |
| 678 | +/** Brazilian Portuguese (Português do Brasil) |
| 679 | + * @author Giro720 |
| 680 | + */ |
| 681 | +$messages['pt-br'] = array( |
| 682 | + 'articleassessment' => 'Avaliação do artigo', |
| 683 | + 'articleassessment-desc' => 'Avaliação do artigo (versão de testes)', |
| 684 | + 'articleassessment-yourfeedback' => 'Os seus comentários', |
| 685 | + 'articleassessment-pleaserate' => 'Dedique um momento para avaliar esta página abaixo, por favor.', |
| 686 | + 'articleassessment-submit' => 'Enviar', |
| 687 | + 'articleassessment-rating-wellsourced' => 'Bem referenciado:', |
| 688 | + 'articleassessment-rating-neutrality' => 'Neutro:', |
| 689 | + 'articleassessment-rating-completeness' => 'Completo:', |
| 690 | + 'articleassessment-rating-readability' => 'Fácil de ler:', |
| 691 | + 'articleassessment-rating-wellsourced-tooltip' => 'Você considera que esta página tem citações suficientes e que essas citações provêm de fontes fiáveis?', |
| 692 | + 'articleassessment-rating-neutrality-tooltip' => 'Você acha que esta página representa, de forma equilibrada, todos os pontos de vista sobre o assunto?', |
| 693 | + 'articleassessment-rating-completeness-tooltip' => 'Você considera que esta página aborda os temas essenciais que deviam ser cobertos?', |
| 694 | + 'articleassessment-rating-readability-tooltip' => 'Você acha que esta página está bem organizada e bem escrita?', |
| 695 | + 'articleassessment-articlerating' => 'Avaliação da página', |
| 696 | + 'articleassessment-error' => 'Ocorreu um erro. |
| 697 | +Por favor, tente novamente mais tarde.', |
| 698 | + 'articleassessment-thanks' => 'Obrigado! As suas avaliações foram salvas.', |
| 699 | + 'articleassessment-featurefeedback' => 'Envie-nos os seus <span class="feedbacklink">comentários</span> sobre esta funcionalidade.', |
| 700 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL:$2|avaliação|avaliações}})', |
| 701 | + 'articleassessment-stalemessage-norevisioncount' => "Esta página foi ''alterada'' desde a sua última revisão. |
| 702 | +Talvez queira voltar a avaliá-la.", |
| 703 | + 'articleassessment-results-show' => '(Resultados ocultados. <span class="showlink">Mostrá-los</span>.)', |
| 704 | + 'articleassessment-results-hide' => '(<span class="hidelink">Ocultar os resultados</span>)', |
| 705 | + 'articleassessment-survey-question-whyrated' => 'Diga-nos porque é que classificou esta página hoje, por favor (marque todas as opções as quais se aplicam):', |
| 706 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Eu queria contribuir para a classificação global da página', |
| 707 | + 'articleassessment-survey-answer-whyrated-development' => 'Eu espero que a minha classificação afete positivamente o desenvolvimento da página', |
| 708 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Eu queria colaborar com a {{SITENAME}}', |
| 709 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Eu gosto de dar a minha opinião', |
| 710 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Hoje não classifiquei páginas, mas queria deixar o meu comentário sobre a funcionalidade', |
| 711 | + 'articleassessment-survey-answer-whyrated-other' => 'Outra', |
| 712 | + 'articleassessment-survey-question-useful' => 'Você acredita que as classificações dadas são úteis e claras?', |
| 713 | + 'articleassessment-survey-question-useful-iffalse' => 'Por quê?', |
| 714 | + 'articleassessment-survey-question-expert' => "Você se considera um ''expert'' na área descrita nesta página?", |
| 715 | + 'articleassessment-survey-question-expert-iftrue' => 'Você pode descrever a sua experiência?', |
| 716 | + 'articleassessment-survey-question-comments' => 'Você tem mais algum comentário?', |
| 717 | + 'articleassessment-survey-submit' => 'Enviar', |
| 718 | + 'articleassessment-survey-title' => 'Por favor, responda a algumas perguntas', |
| 719 | + 'articleassessment-survey-thanks' => 'Obrigado por preencher o questionário.', |
| 720 | +); |
| 721 | + |
| 722 | +/** Russian (Русский) |
| 723 | + * @author MaxSem |
| 724 | + * @author Александр Сигачёв |
| 725 | + * @author Сrower |
| 726 | + */ |
| 727 | +$messages['ru'] = array( |
| 728 | + 'articleassessment' => 'Оценка статьи', |
| 729 | + 'articleassessment-desc' => 'Оценка статьи (экспериментальный вариант)', |
| 730 | + 'articleassessment-yourfeedback' => 'Ваш отзыв', |
| 731 | + 'articleassessment-pleaserate' => 'Пожалуйста, уделите минуту, чтобы оценить статью ниже.', |
| 732 | + 'articleassessment-submit' => 'Сохранить', |
| 733 | + 'articleassessment-rating-wellsourced' => 'Из хорошего источника:', |
| 734 | + 'articleassessment-rating-neutrality' => 'Нейтральная:', |
| 735 | + 'articleassessment-rating-completeness' => 'Завершённая:', |
| 736 | + 'articleassessment-rating-readability' => 'Читаемая:', |
| 737 | + 'articleassessment-rating-wellsourced-tooltip' => 'Считаете ли Вы, что на этой странице достаточно цитат и что они взяты из достоверных источников?', |
| 738 | + 'articleassessment-rating-neutrality-tooltip' => 'Считаете ли Вы, что эта страница объективно отражает все точки зрения по этому вопросу?', |
| 739 | + 'articleassessment-rating-completeness-tooltip' => 'Считаете ли Вы, что эта страница в достаточной мере расскрывает основные вопросы темы.', |
| 740 | + 'articleassessment-rating-readability-tooltip' => 'Считаете ли Вы, что эта страница хорошо организована и хорошо написана?', |
| 741 | + 'articleassessment-articlerating' => 'Рейтинг страницы', |
| 742 | + 'articleassessment-error' => 'Произошла ошибка. |
| 743 | +Пожалуйста, повторите попытку позже.', |
| 744 | + 'articleassessment-thanks' => 'Спасибо! Ваши оценки сохранены.', |
| 745 | + 'articleassessment-featurefeedback' => 'Сообщите [[Special:ArticleAssessmentFeedback|Ваше мнение]] об этой функции.', |
| 746 | + 'articleassessment-noratings' => '$1 ($2 {{PLURAL: $ 2 | оценка | оценки}})', |
| 747 | + 'articleassessment-stalemessage-norevisioncount' => 'Эта страница редактировалась после Вашего просмотра. |
| 748 | +Вы можете оценить её еще раз.', |
| 749 | + 'articleassessment-results-show' => '(Результаты скрыты. <span class="showlink">Показать</span> их).', |
| 750 | + 'articleassessment-results-hide' => '(<span class="hidelink">Скрыть результаты</span>)', |
| 751 | + 'articleassessment-survey-question-whyrated' => 'Пожалуйста, дайте нам знать, почему вы сегодня дали оценку этой странице (отметьте все подходящие варианты):', |
| 752 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Я хотел повлиять на итоговый рейтинг этой страницы', |
| 753 | + 'articleassessment-survey-answer-whyrated-development' => 'Я надеюсь, что моя оценка положительно повлияет на развитие этой странице', |
| 754 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Я хочу содействовать развитию {{GRAMMAR:genitive|{{SITENAME}}}}', |
| 755 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Мне нравится делиться своим мнением', |
| 756 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Я не поставил сегодня оценку, но хочу оставить отзыв о данной функции', |
| 757 | + 'articleassessment-survey-answer-whyrated-other' => 'Иное', |
| 758 | + 'articleassessment-survey-question-useful' => 'Считаете ли вы, что проставленные оценки являются полезными и понятными?', |
| 759 | + 'articleassessment-survey-question-useful-iffalse' => 'Почему?', |
| 760 | + 'articleassessment-survey-question-expert' => 'Считаете ли вы себя специалистом в области, к которой относится тема этой страницы?', |
| 761 | + 'articleassessment-survey-question-expert-iftrue' => 'Можете ли вы привести экспертную оценку?', |
| 762 | + 'articleassessment-survey-question-comments' => 'Есть ли у вас какие-либо дополнительные замечания?', |
| 763 | + 'articleassessment-survey-submit' => 'Отправить', |
| 764 | + 'articleassessment-survey-title' => 'Пожалуйста, ответьте на несколько вопросов', |
| 765 | + 'articleassessment-survey-thanks' => 'Спасибо за участие в опросе.', |
| 766 | +); |
| 767 | + |
| 768 | +/** Tagalog (Tagalog) |
| 769 | + * @author AnakngAraw |
| 770 | + */ |
| 771 | +$messages['tl'] = array( |
| 772 | + 'articleassessment' => 'Pagsusuri ng lathalain', |
| 773 | + 'articleassessment-desc' => 'Pagsusuri ng lathalain (paunang bersyon)', |
| 774 | + 'articleassessment-yourfeedback' => 'Ang iyong puna', |
| 775 | + 'articleassessment-pleaserate' => 'Mangyaring maglaan ng isang sanali upang antasan ang pahinang nasa ibaba.', |
| 776 | + 'articleassessment-submit' => 'Ipadala', |
| 777 | + 'articleassessment-rating-wellsourced' => 'Sapat at tumpak ang mga pinagkunan', |
| 778 | + 'articleassessment-rating-neutrality' => 'Walang pinapanigan:', |
| 779 | + 'articleassessment-rating-completeness' => 'Kumpleto:', |
| 780 | + 'articleassessment-rating-readability' => 'Nababasa:', |
| 781 | + 'articleassessment-rating-wellsourced-tooltip' => 'Sa tingin mo ba ang pahinang ito ay may sapat ng mga pagbanggit at ang mga pagbanggit na ito ay nagbuhat sa mapagkakatiwalaang mga pinagkunan?', |
| 782 | + 'articleassessment-rating-neutrality-tooltip' => 'Sa tingin mo ba ang pahinang ito ay nagpapakita ng isang patas na kinatawan ng lahat ng mga pananaw hinggil sa paksa?', |
| 783 | + 'articleassessment-rating-completeness-tooltip' => 'Sa tingin mo ba ang pahinang ito ay sumasaklaw sa nararapat na mahahalagang mga lugar ng paksa?', |
| 784 | + 'articleassessment-rating-readability-tooltip' => 'Sa tingin mo ba ang pahinang ito ay talagang maayos at mabuti ang pagkakasulat?', |
| 785 | + 'articleassessment-articlerating' => 'Pagkakaantas ng pahina', |
| 786 | + 'articleassessment-error' => 'Naganap ang isang kamalian. |
| 787 | +Subukan uli mamaya.', |
| 788 | + 'articleassessment-thanks' => 'Salamat! Nasagip na ang iyong mga pag-aantas.', |
| 789 | + 'articleassessment-featurefeedback' => 'Bigyan kami ng <span class="feedbacklink">puna</span> hinggil sa tampok na ito.', |
| 790 | + 'articleassessment-noratings' => ' $1 ($2 {{PLURAL:$2|pag-aantas|mga pag-aantas}})', |
| 791 | + 'articleassessment-stalemessage-norevisioncount' => "''Nabago'' ang pahinang ito magmula noong huli mong pagsuri nito. |
| 792 | +Maaari mo itong antasang muli.", |
| 793 | + 'articleassessment-results-show' => '(Nakatago ang mga resulta. <span class="showlink">Ipakita</span> ang mga ito.)', |
| 794 | + 'articleassessment-results-hide' => '(<span class="hidelink">Itago ang mga resulta</span>)', |
| 795 | + 'articleassessment-survey-question-whyrated' => 'Mangyari sabihin sa amin kung bakit mo inantasan ng ganito ang pahinang ito ngayon (lagyan ng tsek ang lahat ng maaari):', |
| 796 | + 'articleassessment-survey-answer-whyrated-contribute-rating' => 'Nais kong umambag sa pangkalahatang kaantasan ng pahina', |
| 797 | + 'articleassessment-survey-answer-whyrated-development' => 'Umaasa ako na ang aking pag-aantas ay positibong makakaapekto sa pagpapaunlad ng pahina', |
| 798 | + 'articleassessment-survey-answer-whyrated-contribute-wiki' => 'Nais kong makapag-ambag sa {{SITENAME}}', |
| 799 | + 'articleassessment-survey-answer-whyrated-sharing-opinion' => 'Nais ko ang pagpapamahagi ng aking opinyon', |
| 800 | + 'articleassessment-survey-answer-whyrated-didntrate' => 'Hindi ako nagbigay ng pag-aantas ngayon, subalit nais kong magbigay ng puna sa hinaharap', |
| 801 | + 'articleassessment-survey-answer-whyrated-other' => 'Iba pa', |
| 802 | + 'articleassessment-survey-question-useful' => 'Naniniwala ka ba na ang mga pag-aantas na ibinigay ay magagamit at malinaw?', |
| 803 | + 'articleassessment-survey-question-useful-iffalse' => 'Bakit?', |
| 804 | + 'articleassessment-survey-question-expert' => 'Itinuturing mo ba ang sarili mo bilang isang dalubhasa sa larangang sakop ng pahinang ito?', |
| 805 | + 'articleassessment-survey-question-expert-iftrue' => 'Maaari mo bang ilarawan ang iyong kadalubhasaan?', |
| 806 | + 'articleassessment-survey-question-comments' => 'Mayroon ka pa bang karagdagang mga puna?', |
| 807 | + 'articleassessment-survey-submit' => 'Ipasa', |
| 808 | + 'articleassessment-survey-title' => 'Pakisagot ang ilang mga katanungan', |
| 809 | + 'articleassessment-survey-thanks' => 'Salamat sa pagsagot sa mga pagtatanong.', |
| 810 | +); |
| 811 | + |
| 812 | +/** Vietnamese (Tiếng Việt) |
| 813 | + * @author Minh Nguyen |
| 814 | + */ |
| 815 | +$messages['vi'] = array( |
| 816 | + 'articleassessment-pleaserate' => 'Xin hãy dành một chút thì giờ để đánh giá trang này ở dưới:', |
| 817 | + 'articleassessment-submit' => 'Đánh giá', |
| 818 | + 'articleassessment-rating-wellsourced' => 'Đầy đủ nguồn:', |
| 819 | + 'articleassessment-rating-neutrality' => 'Trung lập:', |
| 820 | + 'articleassessment-rating-completeness' => 'Đầy đủ:', |
| 821 | + 'articleassessment-rating-readability' => 'Dễ đọc:', |
| 822 | + 'articleassessment-rating-wellsourced-tooltip' => 'Bạn có cảm thấy rằng bày này chú thích nguồn gốc đầy đủ và đáng tin các nguồn?', |
| 823 | + 'articleassessment-rating-neutrality-tooltip' => 'Bạn có cảm thấy rằng bài này đại diện công bằng cho tất cả các quan điểm về các vấn đề?', |
| 824 | + 'articleassessment-rating-completeness-tooltip' => 'Bạn có cảm thấy rằng bài này bao gồm các đề tài cần thiết?', |
| 825 | + 'articleassessment-rating-readability-tooltip' => 'Bạn có cảm thấy rằng bài này được sắp xếp đàng hoàng có văn bản hay?', |
| 826 | + 'articleassessment-articlerating' => 'Đánh giá bài', |
| 827 | + 'articleassessment-error' => 'Đã gặp lỗi. |
| 828 | +Xin hãy thử lại sau.', |
| 829 | + 'articleassessment-thanks' => 'Cám ơn! Đánh giá của bạn đã được lưu.', |
| 830 | + 'articleassessment-noratings' => '$1 ($2 đánh giá)', |
| 831 | + 'articleassessment-stalemessage-norevisioncount' => "Bài này đã được ''chỉnh sửa'' sau lần cuối bạn xem xét nó. |
| 832 | +Bạn có thể muốn đánh giá nó một lần nữa.", |
| 833 | + 'articleassessment-results-show' => '(Các kết quả được ẩn. <span class="showlink">Hiện</span> kết quả.)', |
| 834 | + 'articleassessment-results-hide' => '(<span class="hidelink">Ẩn kết quả</span>)', |
| 835 | +); |
| 836 | + |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 837 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_bg.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_bg.gif |
___________________________________________________________________ |
Added: svn:mime-type |
2 | 838 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/stars.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/stars.gif |
___________________________________________________________________ |
Added: svn:mime-type |
3 | 839 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_disabled_bg.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_disabled_bg.gif |
___________________________________________________________________ |
Added: svn:mime-type |
4 | 840 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/jquery.ui.stars.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/jquery.ui.stars.gif |
___________________________________________________________________ |
Added: svn:mime-type |
5 | 841 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/question.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/question.gif |
___________________________________________________________________ |
Added: svn:mime-type |
6 | 842 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/question-hover.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/question-hover.gif |
___________________________________________________________________ |
Added: svn:mime-type |
7 | 843 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_bar.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/rating_bar.gif |
___________________________________________________________________ |
Added: svn:mime-type |
8 | 844 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/tipsy.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/tipsy.gif |
___________________________________________________________________ |
Added: svn:mime-type |
9 | 845 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/arrow.gif |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/images/arrow.gif |
___________________________________________________________________ |
Added: svn:mime-type |
10 | 846 | + application/octet-stream |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.php |
— | — | @@ -0,0 +1,89 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +// If the number of page revisions (since users last rating) is greater than this |
| 5 | +// then consider the last rating "stale" |
| 6 | +$wgArticleAssessmentStaleCount = 5; |
| 7 | + |
| 8 | +// Array of the "ratings" id's to store. Allows it to be a bit more dynamic |
| 9 | +$wgArticleAssessmentRatings = array( 1, 2, 3, 4 ); |
| 10 | + |
| 11 | +// Which category the pages must belong to have the rating widget added (with _ in text) |
| 12 | +// Extension is "disabled" if this field is an empty string (as per default configuration) |
| 13 | +$wgArticleAssessmentCategory = ''; |
| 14 | + |
| 15 | +// Path to jQuery UI |
| 16 | +$wgArticleAssessmentJUIPath = null; // Defaults to "$wgExtensionAssetsPath/ArticleAssessmentPilot/js/jui.combined.min.js" |
| 17 | + |
| 18 | +// Set to false if jQuery UI's CSS is already included through other means |
| 19 | +$wgArticleAssessmentNeedJUICSS = true; |
| 20 | + |
| 21 | +// Auto-load files |
| 22 | +$dir = dirname( __FILE__ ) . '/'; |
| 23 | +$wgAutoloadClasses['ApiQueryArticleAssessment'] = $dir . 'api/ApiQueryArticleAssessment.php'; |
| 24 | +$wgAutoloadClasses['ApiArticleAssessment'] = $dir . 'api/ApiArticleAssessment.php'; |
| 25 | +$wgAutoloadClasses['ArticleAssessmentPilotHooks'] = $dir . 'ArticleAssessmentPilot.hooks.php'; |
| 26 | + |
| 27 | +// Schema and tables |
| 28 | +$wgHooks['LoadExtensionSchemaUpdates'][] = 'ArticleAssessmentPilotHooks::schema'; |
| 29 | +$wgHooks['ParserTestTables'][] = 'ArticleAssessmentPilotHooks::parserTestTables'; |
| 30 | + |
| 31 | +// Hooks |
| 32 | +$wgHooks['BeforePageDisplay'][] = 'ArticleAssessmentPilotHooks::addResources'; |
| 33 | +$wgHooks['MakeGlobalVariablesScript'][] = 'ArticleAssessmentPilotHooks::addVariables'; |
| 34 | + |
| 35 | +// API modules |
| 36 | +$wgAPIListModules['articleassessment'] = 'ApiQueryArticleAssessment'; |
| 37 | +$wgAPIModules['articleassessment'] = 'ApiArticleAssessment'; |
| 38 | + |
| 39 | +// i18n and aliases |
| 40 | +// Adds Internationalized Messages |
| 41 | +$wgExtensionMessagesFiles['ArticleAssessmentPilot'] = $dir . 'ArticleAssessmentPilot.i18n.php'; |
| 42 | + |
| 43 | +// Credits |
| 44 | +$wgExtensionCredits['other'][] = array( |
| 45 | + 'path' => __FILE__, |
| 46 | + 'name' => 'Article Assessment Pilot', |
| 47 | + 'author' => array( 'Nimish Gautam', 'Sam Reed', 'Adam Miller' ), |
| 48 | + 'version' => '0.1.0', |
| 49 | + 'descriptionmsg' => 'articleassessment-desc', |
| 50 | + 'url' => 'http://www.mediawiki.org/wiki/Extension:ArticleAssessmentPilot' |
| 51 | +); |
| 52 | + |
| 53 | +// Survey setup |
| 54 | +// This is totally a hack, but it's easy and had to be done fast |
| 55 | +require_once( $dir . '../SimpleSurvey/SimpleSurvey.php' ); |
| 56 | + |
| 57 | +// Would ordinarily call this articleassessment but survey names are 16 chars max |
| 58 | +$wgPrefSwitchSurveys['articlerating'] = array( |
| 59 | + 'updatable' => false, |
| 60 | + 'submit-msg' => 'articleassessment-survey-submit', |
| 61 | + 'questions' => array( |
| 62 | + 'whyrated' => array( |
| 63 | + 'question' => 'articleassessment-survey-question-whyrated', |
| 64 | + 'type' => 'checks', |
| 65 | + 'answers' => array( |
| 66 | + 'contribute-rating' => 'articleassessment-survey-answer-whyrated-contribute-rating', |
| 67 | + 'development' => 'articleassessment-survey-answer-whyrated-development', |
| 68 | + 'contribute-wiki' => 'articleassessment-survey-answer-whyrated-contribute-wiki', |
| 69 | + 'sharing-opinion' => 'articleassessment-survey-answer-whyrated-sharing-opinion', |
| 70 | + 'didntrate' => 'articleassessment-survey-answer-whyrated-didntrate', |
| 71 | + ), |
| 72 | + 'other' => 'articleassessment-survey-answer-whyrated-other', |
| 73 | + ), |
| 74 | + 'useful' => array( |
| 75 | + 'question' => 'articleassessment-survey-question-useful', |
| 76 | + 'type' => 'boolean', |
| 77 | + 'iffalse' => 'articleassessment-survey-question-useful-iffalse', |
| 78 | + ), |
| 79 | + 'expert' => array( |
| 80 | + 'question' => 'articleassessment-survey-question-expert', |
| 81 | + 'type' => 'boolean', |
| 82 | + 'iftrue' => 'articleassessment-survey-question-expert-iftrue', |
| 83 | + ), |
| 84 | + 'comments' => array( |
| 85 | + 'question' => 'articleassessment-survey-question-comments', |
| 86 | + 'type' => 'text', |
| 87 | + ), |
| 88 | + ), |
| 89 | +); |
| 90 | +$wgValidSurveys[] = 'articlerating'; |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 91 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css |
— | — | @@ -0,0 +1,236 @@ |
| 2 | +/*! |
| 3 | + * jQuery UI Stars v3.0.1 |
| 4 | + * http://plugins.jquery.com/project/Star_Rating_widget |
| 5 | + * |
| 6 | + * Copyright (c) 2010 Marek "Orkan" Zajac (orkans@gmail.com) |
| 7 | + * Dual licensed under the MIT and GPL licenses. |
| 8 | + * http://docs.jquery.com/License |
| 9 | + * |
| 10 | + * $Rev: 164 $ |
| 11 | + * $Date:: 2010-05-01 #$ |
| 12 | + * $Build: 35 (2010-05-01) |
| 13 | + * |
| 14 | + */ |
| 15 | +.article-assessment-wrapper { |
| 16 | + min-width: 1036px; |
| 17 | +} |
| 18 | +.article-assessment-wrapper .ui-stars-star { |
| 19 | + float: left; |
| 20 | + display: block; |
| 21 | + overflow: hidden; |
| 22 | + text-indent: -999em; |
| 23 | + cursor: pointer; |
| 24 | + padding-right: 4px; |
| 25 | +} |
| 26 | +.article-assessment-wrapper .ui-stars-star a { |
| 27 | + width: 21px; |
| 28 | + height: 21px; |
| 29 | + line-height: 0; |
| 30 | + display: block; |
| 31 | + background: url(../images/stars.gif) no-repeat 0 0; |
| 32 | +} |
| 33 | +.article-assessment-wrapper .ui-stars-star a { |
| 34 | + background-position: 0 0px; |
| 35 | +} |
| 36 | + |
| 37 | +.article-assessment-wrapper .ui-stars-star-on a { |
| 38 | + background-position: 0 -21px; |
| 39 | +} |
| 40 | +.article-assessment-wrapper .ui-stars-star-rated a { |
| 41 | + background-position: 0 -42px; |
| 42 | +} |
| 43 | +.article-assessment-wrapper .ui-stars-star-stale a { |
| 44 | + background-position: 0 -63px; |
| 45 | +} |
| 46 | +.article-assessment-wrapper .ui-stars-star-hover a { |
| 47 | + background-position: 0 -21px; |
| 48 | +} |
| 49 | +.article-assessment-wrapper .ui-stars-star-disabled, |
| 50 | +.article-assessment-wrapper .ui-stars-star-disabled a { |
| 51 | + cursor: default !important; |
| 52 | +} |
| 53 | +.article-assessment-wrapper .ui-stars-cancel { |
| 54 | + display: none; |
| 55 | +} |
| 56 | +/* End ui-stars styles */ |
| 57 | + |
| 58 | +/* Tipsy Styles */ |
| 59 | +.tipsy { padding: 5px 5px 10px; font-size: 12px; position: absolute; z-index: 100000; overflow: visible; } |
| 60 | +.tipsy-inner { padding: 5px 8px 4px 8px; background-color: #d6f3ff; color: black; border: 1px solid #5dc9f4; max-width: 300px; text-align: left; } |
| 61 | +.tipsy-arrow { position: absolute; background: url( '../images/arrow.gif' ) no-repeat top left; width: 13px; height: 13px; } |
| 62 | +.tipsy-se .tipsy-arrow { bottom: -2px; right: 10px; background-position: 0% 100%; } |
| 63 | + |
| 64 | +/* End Tipsy styles */ |
| 65 | +.article-assessment-wrapper #article-assessment-rate, |
| 66 | +.article-assessment-wrapper #article-assessment-ratings { |
| 67 | + background: #f7f7f7; |
| 68 | + float: left; |
| 69 | +} |
| 70 | +.article-assessment-wrapper #article-assessment-ratings { |
| 71 | + width: 320px; |
| 72 | +} |
| 73 | +.article-assessment-wrapper #article-assessment-rate { |
| 74 | + width: 650px; |
| 75 | + margin-right: 10px; |
| 76 | +} |
| 77 | +.article-assessment-wrapper legend { |
| 78 | + font-weight: bold; |
| 79 | +} |
| 80 | +.article-assessment-wrapper .field-wrapper { |
| 81 | + float: left; |
| 82 | + width: 270px; |
| 83 | + padding-right: 28px; |
| 84 | +} |
| 85 | +.article-assessment-wrapper .rating-field { |
| 86 | + float: right; |
| 87 | + width: 125px; |
| 88 | + line-height: 24px; |
| 89 | + padding-right: 5px; |
| 90 | +} |
| 91 | +.article-assessment-wrapper .rating-field-label{ |
| 92 | + float: left; |
| 93 | + font-weight: bold; |
| 94 | + line-height: 24px; |
| 95 | +} |
| 96 | +.article-assessment-wrapper .rating-field-label { |
| 97 | + margin-right: 10px; |
| 98 | +} |
| 99 | +.article-assessment-wrapper .rating-field-hint { |
| 100 | + width: 11px; |
| 101 | + height: 24px; |
| 102 | + display: block; |
| 103 | + float: right; |
| 104 | + background: url(../images/question.gif) 0 50% no-repeat; |
| 105 | +} |
| 106 | +.article-assessment-wrapper .rating-field-hint:hover { |
| 107 | + background: url(../images/question-hover.gif) 0 50% no-repeat; |
| 108 | +} |
| 109 | + |
| 110 | +.article-assessment-wrapper .article-assessment-flash { |
| 111 | + float: left; |
| 112 | + font-size: 11px; |
| 113 | + padding: 1px 5px; |
| 114 | + width: 560px; |
| 115 | + text-align: left; |
| 116 | + display: block; |
| 117 | +} |
| 118 | +.article-assessment-wrapper .article-assessment-stale-msg { |
| 119 | + background: #d6f3ff; |
| 120 | + border: 2px solid #5dc9f4; |
| 121 | +} |
| 122 | +.article-assessment-wrapper .article-assessment-success-msg { |
| 123 | + background: #e8e8e8; |
| 124 | + border: 2px solid #006505; |
| 125 | +} |
| 126 | +.article-assessment-wrapper .article-assessment-error-msg { |
| 127 | + background: #e8e8e8; |
| 128 | + border: 2px solid #a91100; |
| 129 | +} |
| 130 | +.article-assessment-wrapper .article-assessment-rating-field-name { |
| 131 | + float: left; |
| 132 | + width: 110px; |
| 133 | + font-weight: bold; |
| 134 | + font-size: 11px; |
| 135 | +} |
| 136 | +.article-assessment-wrapper .article-assessment-rating-field-value-wrapper { |
| 137 | + background: url( ../images/rating_bg.gif ) 0 0 no-repeat; |
| 138 | + width: 120px; |
| 139 | + height: 13px; |
| 140 | + display: block; |
| 141 | + float: left; |
| 142 | + padding: 2px; |
| 143 | + text-indent: -9999px; |
| 144 | + margin-top: 4px; |
| 145 | +} |
| 146 | +.article-assessment-wrapper .article-assessment-rate-instructions, |
| 147 | +.article-assessment-wrapper .article-assessment-rate-feedback, |
| 148 | +.article-assessment-wrapper .article-assessment-show-ratings, |
| 149 | +.article-assessment-wrapper .article-assessment-hide-ratings { |
| 150 | + font-size: 11px; |
| 151 | + font-style: italic; |
| 152 | +} |
| 153 | +.article-assessment-wrapper .article-assessment-rate-instructions { |
| 154 | + float: left; |
| 155 | +} |
| 156 | +.article-assessment-wrapper .article-assessment-rate-feedback { |
| 157 | + float: right; |
| 158 | +} |
| 159 | +.article-assessment-wrapper .article-assessment-rating-field-value-wrapper .article-assessment-rating-field-value { |
| 160 | + background: url( ../images/rating_bar.gif ) 0 0 no-repeat; |
| 161 | + height: 9px; |
| 162 | + float: right; |
| 163 | + display: block; |
| 164 | +} |
| 165 | +.article-assessment-wrapper .article-assessment-rating-fields { |
| 166 | + margin: 8px 0; |
| 167 | +} |
| 168 | +.article-assessment-wrapper .article-assessment-rating-fields .field-wrapper { |
| 169 | + margin-bottom: 5px; |
| 170 | +} |
| 171 | +.article-assessment-rating-count { |
| 172 | + font-size: 11px; |
| 173 | + margin-left: 5px; |
| 174 | + float: left; |
| 175 | +} |
| 176 | +.article-assessment-submit input { |
| 177 | + margin: 2px 0; |
| 178 | + float: right; |
| 179 | +} |
| 180 | +.article-assessment-wrapper .article-assessment-ratings-disabled .article-assessment-rating-field-value-wrapper { |
| 181 | + background: url( ../images/rating_disabled_bg.gif ) 0 0 no-repeat; |
| 182 | +} |
| 183 | +.article-assessment-wrapper .article-assessment-ratings-disabled .article-assessment-rating-field-value { |
| 184 | + display: none; |
| 185 | +} |
| 186 | +.article-assessment-wrapper .article-assessment-ratings-disabled .article-assessment-rating-count { |
| 187 | + display: none; |
| 188 | +} |
| 189 | +.article-assessment-wrapper .article-assessment-ratings-disabled .article-assessment-rating-field-name { |
| 190 | + color: #9f9f9f; |
| 191 | +} |
| 192 | +/* Self Clearing Floats */ |
| 193 | +.article-assessment-wrapper .article-assessment-information:after, |
| 194 | +.article-assessment-wrapper .field-wrapper:after, |
| 195 | +.article-assessment-wrapper .article-assessment-rating-fields:after, |
| 196 | +.article-assessment-rating:after, |
| 197 | +.article-assessment-wrapper .article-assessment-submit:after, |
| 198 | +.article-assessment-wrapper .rating-fields:after { |
| 199 | + content: "."; |
| 200 | + display: block; |
| 201 | + height: 0; |
| 202 | + clear: both; |
| 203 | + visibility: hidden; |
| 204 | +} |
| 205 | +.article-assessment-wrapper .field-wrapper, |
| 206 | +.article-assessment-wrapper .article-assessment-information, |
| 207 | +.article-assessment-wrapper .article-assessment-rating-fields, |
| 208 | +.article-assessment-rating, |
| 209 | +.article-assessment-wrapper .article-assessment-submit, |
| 210 | +.article-assessment-wrapper .rating-fields { |
| 211 | + display: inline-block; |
| 212 | +} |
| 213 | +* html .article-assessment-wrapper .field-wrapper, |
| 214 | +* html .article-assessment-wrapper .article-assessment-information, |
| 215 | +* html .article-assessment-wrapper .article-assessment-rating-fields, |
| 216 | +* html .article-assessment-rating, |
| 217 | +* html .article-assessment-wrapper .article-assessment-submit, |
| 218 | +* html .article-assessment-wrapper .rating-fields { |
| 219 | + height: 1%; |
| 220 | +} |
| 221 | +.article-assessment-wrapper .field-wrapper, |
| 222 | +.article-assessment-wrapper .article-assessment-information, |
| 223 | +.article-assessment-wrapper .article-assessment-rating-fields, |
| 224 | +.article-assessment-rating, |
| 225 | +.article-assessment-wrapper .article-assessment-submit, |
| 226 | +.article-assessment-wrapper .rating-fields { |
| 227 | + display: block; |
| 228 | +} |
| 229 | + |
| 230 | +#article-assessment-dialog.loading { |
| 231 | + display: block; |
| 232 | + height: 24px; |
| 233 | + width: 24px; |
| 234 | + background: url( ../images/loading.gif ) center no-repeat; |
| 235 | + text-indent: -9999px; |
| 236 | + margin: 0 auto; |
| 237 | +} |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 238 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/jquery-ui-1.7.2.css |
— | — | @@ -0,0 +1,406 @@ |
| 2 | +/* |
| 3 | +* jQuery UI CSS Framework |
| 4 | +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) |
| 5 | +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. |
| 6 | +*/ |
| 7 | + |
| 8 | +/* Layout helpers |
| 9 | +----------------------------------*/ |
| 10 | +.ui-helper-hidden { display: none; } |
| 11 | +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } |
| 12 | +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } |
| 13 | +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
| 14 | +.ui-helper-clearfix { display: inline-block; } |
| 15 | +/* required comment for clearfix to work in Opera \*/ |
| 16 | +* html .ui-helper-clearfix { height:1%; } |
| 17 | +.ui-helper-clearfix { display:block; } |
| 18 | +/* end clearfix */ |
| 19 | +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } |
| 20 | + |
| 21 | + |
| 22 | +/* Interaction Cues |
| 23 | +----------------------------------*/ |
| 24 | +.ui-state-disabled { cursor: default !important; } |
| 25 | + |
| 26 | + |
| 27 | +/* Icons |
| 28 | +----------------------------------*/ |
| 29 | + |
| 30 | +/* states and images */ |
| 31 | +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } |
| 32 | + |
| 33 | + |
| 34 | +/* Misc visuals |
| 35 | +----------------------------------*/ |
| 36 | + |
| 37 | +/* Overlays */ |
| 38 | +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } |
| 39 | + |
| 40 | + |
| 41 | + |
| 42 | +/* |
| 43 | +* jQuery UI CSS Framework |
| 44 | +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) |
| 45 | +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. |
| 46 | +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0&bgColorHeader=e2eef6&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=100&borderColorHeader=c0c0c0&fcHeader=333333&iconColorHeader=333333&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=100&borderColorContent=c0c0c0&fcContent=000000&iconColorContent=000000&bgColorDefault=e2eef6&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=100&borderColorDefault=c0c0c0&fcDefault=333333&iconColorDefault=333333&bgColorHover=ffffff&bgTextureHover=04_highlight_hard.png&bgImgOpacityHover=100&borderColorHover=c0c0c0&fcHover=333333&iconColorHover=333333&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=100&borderColorActive=c0c0c0&fcActive=333333&iconColorActive=333333&bgColorHighlight=fbf9ee&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=000000&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=75&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px |
| 47 | +*/ |
| 48 | + |
| 49 | + |
| 50 | +/* Component containers |
| 51 | +----------------------------------*/ |
| 52 | +.ui-widget { font-family: sans-serif; font-size: 0.9em; } |
| 53 | +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; } |
| 54 | +.ui-widget-content { border: 1px solid #c0c0c0; background: #ffffff url(images/ui-bg_flat_100_ffffff_40x100.png) 50% 50% repeat-x; color: #000000; } |
| 55 | +.ui-widget-content a { color: #000000; } |
| 56 | +.ui-widget-header { border-bottom: 1px solid #c0c0c0; line-height: 1em; background: #e2eef6 url(images/ui-bg_highlight-hard_100_e2eef6_1x100.png) 50% 50% repeat-x; color: #333333; font-weight: bold; } |
| 57 | +.ui-widget-header a { color: #333333; } |
| 58 | + |
| 59 | +/* Interaction states |
| 60 | +----------------------------------*/ |
| 61 | +.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #c0c0c0; background: #e2eef6 url(images/ui-bg_highlight-hard_100_e2eef6_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; } |
| 62 | +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; outline: none; } |
| 63 | +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #c0c0c0; background: #ffffff url(images/ui-bg_highlight-hard_100_ffffff_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; } |
| 64 | +.ui-state-hover a, .ui-state-hover a:hover { color: #333333; text-decoration: none; outline: none; } |
| 65 | +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #c0c0c0; background: #ffffff url(images/ui-bg_flat_100_ffffff_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #333333; outline: none; } |
| 66 | +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #333333; outline: none; text-decoration: none; } |
| 67 | + |
| 68 | +/* Interaction Cues |
| 69 | +----------------------------------*/ |
| 70 | +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_highlight-hard_55_fbf9ee_1x100.png) 50% top repeat-x; color: #363636; } |
| 71 | +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } |
| 72 | +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; } |
| 73 | +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } |
| 74 | +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } |
| 75 | +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } |
| 76 | +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } |
| 77 | +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } |
| 78 | + |
| 79 | +/* Icons |
| 80 | +----------------------------------*/ |
| 81 | + |
| 82 | +/* states and images */ |
| 83 | +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_000000_256x240.png); } |
| 84 | +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_000000_256x240.png); } |
| 85 | +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); } |
| 86 | +.ui-state-default .ui-icon { background-image: url(images/ui-icons_333333_256x240.png); } |
| 87 | +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); } |
| 88 | +.ui-state-active .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); } |
| 89 | +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } |
| 90 | +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } |
| 91 | + |
| 92 | +/* positioning */ |
| 93 | +.ui-icon-carat-1-n { background-position: 0 0; } |
| 94 | +.ui-icon-carat-1-ne { background-position: -16px 0; } |
| 95 | +.ui-icon-carat-1-e { background-position: -32px 0; } |
| 96 | +.ui-icon-carat-1-se { background-position: -48px 0; } |
| 97 | +.ui-icon-carat-1-s { background-position: -64px 0; } |
| 98 | +.ui-icon-carat-1-sw { background-position: -80px 0; } |
| 99 | +.ui-icon-carat-1-w { background-position: -96px 0; } |
| 100 | +.ui-icon-carat-1-nw { background-position: -112px 0; } |
| 101 | +.ui-icon-carat-2-n-s { background-position: -128px 0; } |
| 102 | +.ui-icon-carat-2-e-w { background-position: -144px 0; } |
| 103 | +.ui-icon-triangle-1-n { background-position: 0 -16px; } |
| 104 | +.ui-icon-triangle-1-ne { background-position: -16px -16px; } |
| 105 | +.ui-icon-triangle-1-e { background-position: -32px -16px; } |
| 106 | +.ui-icon-triangle-1-se { background-position: -48px -16px; } |
| 107 | +.ui-icon-triangle-1-s { background-position: -64px -16px; } |
| 108 | +.ui-icon-triangle-1-sw { background-position: -80px -16px; } |
| 109 | +.ui-icon-triangle-1-w { background-position: -96px -16px; } |
| 110 | +.ui-icon-triangle-1-nw { background-position: -112px -16px; } |
| 111 | +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } |
| 112 | +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } |
| 113 | +.ui-icon-arrow-1-n { background-position: 0 -32px; } |
| 114 | +.ui-icon-arrow-1-ne { background-position: -16px -32px; } |
| 115 | +.ui-icon-arrow-1-e { background-position: -32px -32px; } |
| 116 | +.ui-icon-arrow-1-se { background-position: -48px -32px; } |
| 117 | +.ui-icon-arrow-1-s { background-position: -64px -32px; } |
| 118 | +.ui-icon-arrow-1-sw { background-position: -80px -32px; } |
| 119 | +.ui-icon-arrow-1-w { background-position: -96px -32px; } |
| 120 | +.ui-icon-arrow-1-nw { background-position: -112px -32px; } |
| 121 | +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } |
| 122 | +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } |
| 123 | +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } |
| 124 | +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } |
| 125 | +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } |
| 126 | +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } |
| 127 | +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } |
| 128 | +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } |
| 129 | +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } |
| 130 | +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } |
| 131 | +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } |
| 132 | +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } |
| 133 | +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } |
| 134 | +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } |
| 135 | +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } |
| 136 | +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } |
| 137 | +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } |
| 138 | +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } |
| 139 | +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } |
| 140 | +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } |
| 141 | +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } |
| 142 | +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } |
| 143 | +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } |
| 144 | +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } |
| 145 | +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } |
| 146 | +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } |
| 147 | +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } |
| 148 | +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } |
| 149 | +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } |
| 150 | +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } |
| 151 | +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } |
| 152 | +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } |
| 153 | +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } |
| 154 | +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } |
| 155 | +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } |
| 156 | +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } |
| 157 | +.ui-icon-arrow-4 { background-position: 0 -80px; } |
| 158 | +.ui-icon-arrow-4-diag { background-position: -16px -80px; } |
| 159 | +.ui-icon-extlink { background-position: -32px -80px; } |
| 160 | +.ui-icon-newwin { background-position: -48px -80px; } |
| 161 | +.ui-icon-refresh { background-position: -64px -80px; } |
| 162 | +.ui-icon-shuffle { background-position: -80px -80px; } |
| 163 | +.ui-icon-transfer-e-w { background-position: -96px -80px; } |
| 164 | +.ui-icon-transferthick-e-w { background-position: -112px -80px; } |
| 165 | +.ui-icon-folder-collapsed { background-position: 0 -96px; } |
| 166 | +.ui-icon-folder-open { background-position: -16px -96px; } |
| 167 | +.ui-icon-document { background-position: -32px -96px; } |
| 168 | +.ui-icon-document-b { background-position: -48px -96px; } |
| 169 | +.ui-icon-note { background-position: -64px -96px; } |
| 170 | +.ui-icon-mail-closed { background-position: -80px -96px; } |
| 171 | +.ui-icon-mail-open { background-position: -96px -96px; } |
| 172 | +.ui-icon-suitcase { background-position: -112px -96px; } |
| 173 | +.ui-icon-comment { background-position: -128px -96px; } |
| 174 | +.ui-icon-person { background-position: -144px -96px; } |
| 175 | +.ui-icon-print { background-position: -160px -96px; } |
| 176 | +.ui-icon-trash { background-position: -176px -96px; } |
| 177 | +.ui-icon-locked { background-position: -192px -96px; } |
| 178 | +.ui-icon-unlocked { background-position: -208px -96px; } |
| 179 | +.ui-icon-bookmark { background-position: -224px -96px; } |
| 180 | +.ui-icon-tag { background-position: -240px -96px; } |
| 181 | +.ui-icon-home { background-position: 0 -112px; } |
| 182 | +.ui-icon-flag { background-position: -16px -112px; } |
| 183 | +.ui-icon-calendar { background-position: -32px -112px; } |
| 184 | +.ui-icon-cart { background-position: -48px -112px; } |
| 185 | +.ui-icon-pencil { background-position: -64px -112px; } |
| 186 | +.ui-icon-clock { background-position: -80px -112px; } |
| 187 | +.ui-icon-disk { background-position: -96px -112px; } |
| 188 | +.ui-icon-calculator { background-position: -112px -112px; } |
| 189 | +.ui-icon-zoomin { background-position: -128px -112px; } |
| 190 | +.ui-icon-zoomout { background-position: -144px -112px; } |
| 191 | +.ui-icon-search { background-position: -160px -112px; } |
| 192 | +.ui-icon-wrench { background-position: -176px -112px; } |
| 193 | +.ui-icon-gear { background-position: -192px -112px; } |
| 194 | +.ui-icon-heart { background-position: -208px -112px; } |
| 195 | +.ui-icon-star { background-position: -224px -112px; } |
| 196 | +.ui-icon-link { background-position: -240px -112px; } |
| 197 | +.ui-icon-cancel { background-position: 0 -128px; } |
| 198 | +.ui-icon-plus { background-position: -16px -128px; } |
| 199 | +.ui-icon-plusthick { background-position: -32px -128px; } |
| 200 | +.ui-icon-minus { background-position: -48px -128px; } |
| 201 | +.ui-icon-minusthick { background-position: -64px -128px; } |
| 202 | +.ui-icon-close { background-position: -80px -128px; } |
| 203 | +.ui-icon-closethick { background-position: -96px -128px; } |
| 204 | +.ui-icon-key { background-position: -112px -128px; } |
| 205 | +.ui-icon-lightbulb { background-position: -128px -128px; } |
| 206 | +.ui-icon-scissors { background-position: -144px -128px; } |
| 207 | +.ui-icon-clipboard { background-position: -160px -128px; } |
| 208 | +.ui-icon-copy { background-position: -176px -128px; } |
| 209 | +.ui-icon-contact { background-position: -192px -128px; } |
| 210 | +.ui-icon-image { background-position: -208px -128px; } |
| 211 | +.ui-icon-video { background-position: -224px -128px; } |
| 212 | +.ui-icon-script { background-position: -240px -128px; } |
| 213 | +.ui-icon-alert { background-position: 0 -144px; } |
| 214 | +.ui-icon-info { background-position: -16px -144px; } |
| 215 | +.ui-icon-notice { background-position: -32px -144px; } |
| 216 | +.ui-icon-help { background-position: -48px -144px; } |
| 217 | +.ui-icon-check { background-position: -64px -144px; } |
| 218 | +.ui-icon-bullet { background-position: -80px -144px; } |
| 219 | +.ui-icon-radio-off { background-position: -96px -144px; } |
| 220 | +.ui-icon-radio-on { background-position: -112px -144px; } |
| 221 | +.ui-icon-pin-w { background-position: -128px -144px; } |
| 222 | +.ui-icon-pin-s { background-position: -144px -144px; } |
| 223 | +.ui-icon-play { background-position: 0 -160px; } |
| 224 | +.ui-icon-pause { background-position: -16px -160px; } |
| 225 | +.ui-icon-seek-next { background-position: -32px -160px; } |
| 226 | +.ui-icon-seek-prev { background-position: -48px -160px; } |
| 227 | +.ui-icon-seek-end { background-position: -64px -160px; } |
| 228 | +.ui-icon-seek-first { background-position: -80px -160px; } |
| 229 | +.ui-icon-stop { background-position: -96px -160px; } |
| 230 | +.ui-icon-eject { background-position: -112px -160px; } |
| 231 | +.ui-icon-volume-off { background-position: -128px -160px; } |
| 232 | +.ui-icon-volume-on { background-position: -144px -160px; } |
| 233 | +.ui-icon-power { background-position: 0 -176px; } |
| 234 | +.ui-icon-signal-diag { background-position: -16px -176px; } |
| 235 | +.ui-icon-signal { background-position: -32px -176px; } |
| 236 | +.ui-icon-battery-0 { background-position: -48px -176px; } |
| 237 | +.ui-icon-battery-1 { background-position: -64px -176px; } |
| 238 | +.ui-icon-battery-2 { background-position: -80px -176px; } |
| 239 | +.ui-icon-battery-3 { background-position: -96px -176px; } |
| 240 | +.ui-icon-circle-plus { background-position: 0 -192px; } |
| 241 | +.ui-icon-circle-minus { background-position: -16px -192px; } |
| 242 | +.ui-icon-circle-close { background-position: -32px -192px; } |
| 243 | +.ui-icon-circle-triangle-e { background-position: -48px -192px; } |
| 244 | +.ui-icon-circle-triangle-s { background-position: -64px -192px; } |
| 245 | +.ui-icon-circle-triangle-w { background-position: -80px -192px; } |
| 246 | +.ui-icon-circle-triangle-n { background-position: -96px -192px; } |
| 247 | +.ui-icon-circle-arrow-e { background-position: -112px -192px; } |
| 248 | +.ui-icon-circle-arrow-s { background-position: -128px -192px; } |
| 249 | +.ui-icon-circle-arrow-w { background-position: -144px -192px; } |
| 250 | +.ui-icon-circle-arrow-n { background-position: -160px -192px; } |
| 251 | +.ui-icon-circle-zoomin { background-position: -176px -192px; } |
| 252 | +.ui-icon-circle-zoomout { background-position: -192px -192px; } |
| 253 | +.ui-icon-circle-check { background-position: -208px -192px; } |
| 254 | +.ui-icon-circlesmall-plus { background-position: 0 -208px; } |
| 255 | +.ui-icon-circlesmall-minus { background-position: -16px -208px; } |
| 256 | +.ui-icon-circlesmall-close { background-position: -32px -208px; } |
| 257 | +.ui-icon-squaresmall-plus { background-position: -48px -208px; } |
| 258 | +.ui-icon-squaresmall-minus { background-position: -64px -208px; } |
| 259 | +.ui-icon-squaresmall-close { background-position: -80px -208px; } |
| 260 | +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } |
| 261 | +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } |
| 262 | +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } |
| 263 | +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } |
| 264 | +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } |
| 265 | +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } |
| 266 | + |
| 267 | + |
| 268 | +/* Misc visuals |
| 269 | +----------------------------------*/ |
| 270 | + |
| 271 | +/* Corner radius */ |
| 272 | +.ui-corner-tl { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; } |
| 273 | +.ui-corner-tr { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; } |
| 274 | +.ui-corner-bl { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; } |
| 275 | +.ui-corner-br { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; } |
| 276 | +.ui-corner-top { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; } |
| 277 | +.ui-corner-bottom { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; } |
| 278 | +.ui-corner-right { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; } |
| 279 | +.ui-corner-left { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; } |
| 280 | +.ui-corner-all { -moz-border-radius: 0; -webkit-border-radius: 0; } |
| 281 | + |
| 282 | +/* Overlays */ |
| 283 | +.ui-widget-overlay { background: #000000 url(images/ui-bg_flat_0_000000_40x100.png) 50% 50% repeat-x; opacity: .75;filter:Alpha(Opacity=75); } |
| 284 | +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000 url(images/ui-bg_flat_0_000000_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion |
| 285 | +----------------------------------*/ |
| 286 | +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } |
| 287 | +.ui-accordion .ui-accordion-li-fix { display: inline; } |
| 288 | +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } |
| 289 | +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } |
| 290 | +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } |
| 291 | +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } |
| 292 | +.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker |
| 293 | +----------------------------------*/ |
| 294 | +.ui-datepicker { width: 17em; padding: .2em .2em 0; } |
| 295 | +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } |
| 296 | +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } |
| 297 | +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } |
| 298 | +.ui-datepicker .ui-datepicker-prev { left:2px; } |
| 299 | +.ui-datepicker .ui-datepicker-next { right:2px; } |
| 300 | +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } |
| 301 | +.ui-datepicker .ui-datepicker-next-hover { right:1px; } |
| 302 | +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } |
| 303 | +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } |
| 304 | +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } |
| 305 | +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} |
| 306 | +.ui-datepicker select.ui-datepicker-month, |
| 307 | +.ui-datepicker select.ui-datepicker-year { width: 49%;} |
| 308 | +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } |
| 309 | +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } |
| 310 | +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } |
| 311 | +.ui-datepicker td { border: 0; padding: 1px; } |
| 312 | +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } |
| 313 | +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } |
| 314 | +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } |
| 315 | +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } |
| 316 | + |
| 317 | +/* with multiple calendars */ |
| 318 | +.ui-datepicker.ui-datepicker-multi { width:auto; } |
| 319 | +.ui-datepicker-multi .ui-datepicker-group { float:left; } |
| 320 | +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } |
| 321 | +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } |
| 322 | +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } |
| 323 | +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } |
| 324 | +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } |
| 325 | +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } |
| 326 | +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } |
| 327 | +.ui-datepicker-row-break { clear:both; width:100%; } |
| 328 | + |
| 329 | +/* RTL support */ |
| 330 | +.ui-datepicker-rtl { direction: rtl; } |
| 331 | +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } |
| 332 | +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } |
| 333 | +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } |
| 334 | +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } |
| 335 | +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } |
| 336 | +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } |
| 337 | +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } |
| 338 | +.ui-datepicker-rtl .ui-datepicker-group { float:right; } |
| 339 | +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } |
| 340 | +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } |
| 341 | + |
| 342 | +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ |
| 343 | +.ui-datepicker-cover { |
| 344 | + display: none; /*sorry for IE5*/ |
| 345 | + display/**/: block; /*sorry for IE5*/ |
| 346 | + position: absolute; /*must have*/ |
| 347 | + z-index: -1; /*must have*/ |
| 348 | + filter: mask(); /*must have*/ |
| 349 | + top: -4px; /*must have*/ |
| 350 | + left: -4px; /*must have*/ |
| 351 | + width: 200px; /*must have*/ |
| 352 | + height: 200px; /*must have*/ |
| 353 | +}/* Dialog |
| 354 | +----------------------------------*/ |
| 355 | +.ui-dialog { position: relative; padding: 0; width: 300px; } |
| 356 | +.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative; } |
| 357 | +.ui-dialog .ui-dialog-title { float: left; margin: 0; } |
| 358 | +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .75em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } |
| 359 | +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } |
| 360 | +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } |
| 361 | +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } |
| 362 | +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } |
| 363 | +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } |
| 364 | +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } |
| 365 | +.ui-draggable .ui-dialog-titlebar { cursor: move; } |
| 366 | +/* Progressbar |
| 367 | +----------------------------------*/ |
| 368 | +.ui-progressbar { height:2em; text-align: left; } |
| 369 | +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable |
| 370 | +----------------------------------*/ |
| 371 | +.ui-resizable { position: relative;} |
| 372 | +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} |
| 373 | +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } |
| 374 | +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } |
| 375 | +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } |
| 376 | +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } |
| 377 | +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } |
| 378 | +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } |
| 379 | +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } |
| 380 | +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } |
| 381 | +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider |
| 382 | +----------------------------------*/ |
| 383 | +.ui-slider { position: relative; text-align: left; } |
| 384 | +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } |
| 385 | +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } |
| 386 | + |
| 387 | +.ui-slider-horizontal { height: .8em; } |
| 388 | +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } |
| 389 | +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } |
| 390 | +.ui-slider-horizontal .ui-slider-range-min { left: 0; } |
| 391 | +.ui-slider-horizontal .ui-slider-range-max { right: 0; } |
| 392 | + |
| 393 | +.ui-slider-vertical { width: .8em; height: 100px; } |
| 394 | +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } |
| 395 | +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } |
| 396 | +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } |
| 397 | +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs |
| 398 | +----------------------------------*/ |
| 399 | +.ui-tabs { padding: .2em; zoom: 1; } |
| 400 | +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } |
| 401 | +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } |
| 402 | +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } |
| 403 | +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } |
| 404 | +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } |
| 405 | +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ |
| 406 | +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } |
| 407 | +.ui-tabs .ui-tabs-hide { display: none !important; } |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/jquery-ui-1.7.2.css |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 408 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
2 | 409 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_2e83ff_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_2e83ff_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
3 | 410 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_000000_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_000000_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
4 | 411 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_333333_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_333333_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
5 | 412 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_100_ffffff_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_100_ffffff_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
6 | 413 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_flat_0_000000_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_flat_0_000000_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
7 | 414 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_flat_100_ffffff_40x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_flat_100_ffffff_40x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
8 | 415 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_55_fbf9ee_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_55_fbf9ee_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
9 | 416 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_cd0a0a_256x240.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-icons_cd0a0a_256x240.png |
___________________________________________________________________ |
Added: svn:mime-type |
10 | 417 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_100_e2eef6_1x100.png |
Cannot display: file marked as a binary type. |
svn:mime-type = image/png |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/css/images/ui-bg_highlight-hard_100_e2eef6_1x100.png |
___________________________________________________________________ |
Added: svn:mime-type |
11 | 418 | + image/png |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.hooks.php |
— | — | @@ -0,0 +1,162 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +/** |
| 5 | + * Hooks for ArticleAssessmentPilot |
| 6 | + * |
| 7 | + * @file |
| 8 | + * @ingroup Extensions |
| 9 | + */ |
| 10 | +class ArticleAssessmentPilotHooks { |
| 11 | + private static $styleFiles = array( |
| 12 | + array( 'src' => 'css/ArticleAssessment.css', 'version' => 1 ), |
| 13 | + ); |
| 14 | + |
| 15 | + private static $scriptFiles = array( |
| 16 | + array( 'src' => 'js/ArticleAssessment.js', 'version' => 2 ), |
| 17 | + array( 'src' => 'js/jquery.cookie.js', 'version' => 1 ), |
| 18 | + array( 'src' => 'js/jquery.tipsy.js', 'version' => 1 ), |
| 19 | + array( 'src' => 'js/jquery.stars.js', 'version' => 1 ), |
| 20 | + ); |
| 21 | + |
| 22 | + private static $messages = array(); |
| 23 | + private static $scripts = array(); |
| 24 | + |
| 25 | + /* Static Functions */ |
| 26 | + public static function schema() { |
| 27 | + global $wgExtNewTables; |
| 28 | + |
| 29 | + $wgExtNewTables[] = array( |
| 30 | + 'article_assessment', |
| 31 | + dirname( __FILE__ ) . '/ArticleAssessmentPilot.sql' |
| 32 | + ); |
| 33 | + |
| 34 | + return true; |
| 35 | + } |
| 36 | + |
| 37 | + public static function addVariables( &$vars ) { |
| 38 | + global $wgArticleAssessmentJUIPath, $wgExtensionAssetsPath; |
| 39 | + $vars['wgArticleAssessmentJUIPath'] = $wgArticleAssessmentJUIPath ? $wgArticleAssessmentJUIPath : |
| 40 | + "$wgExtensionAssetsPath/ArticleAssessmentPilot/js/jui.combined.min.js"; |
| 41 | + return true; |
| 42 | + } |
| 43 | + |
| 44 | + /** |
| 45 | + * Make sure the tables exist for parser tests |
| 46 | + * @param $tables |
| 47 | + * @return bool |
| 48 | + */ |
| 49 | + public static function parserTestTables( &$tables ) { |
| 50 | + $tables[] = 'article_assessment'; |
| 51 | + $tables[] = 'article_assessment_pages'; |
| 52 | + $tables[] = 'article_assessment_ratings'; |
| 53 | + return true; |
| 54 | + } |
| 55 | + |
| 56 | + public static function addResources( $out ) { |
| 57 | + |
| 58 | + $title = $out->getTitle(); |
| 59 | + |
| 60 | + // Chances are we only want to be rating Mainspace, right? |
| 61 | + if ( $title->getNamespace() !== NS_MAIN ) { |
| 62 | + return true; |
| 63 | + } |
| 64 | + |
| 65 | + global $wgRequest; |
| 66 | + |
| 67 | + // Only show for view actions. |
| 68 | + if ( $wgRequest->getVal( 'action' ) !== null && $wgRequest->getVal( 'action' ) !== 'view' ) { |
| 69 | + return true; |
| 70 | + } |
| 71 | + |
| 72 | + global $wgArticleAssessmentCategory; |
| 73 | + |
| 74 | + // check if this page should have the form |
| 75 | + if ( $wgArticleAssessmentCategory === '' |
| 76 | + || !self::isInCategory( $title->getArticleId(), $wgArticleAssessmentCategory ) ) { |
| 77 | + return true; |
| 78 | + } |
| 79 | + |
| 80 | + global $wgExtensionAssetsPath; |
| 81 | + |
| 82 | + foreach ( self::$scriptFiles as $script ) { |
| 83 | + $out->addScriptFile( $wgExtensionAssetsPath . |
| 84 | + "/ArticleAssessmentPilot/{$script['src']}", $script['version'] |
| 85 | + ); |
| 86 | + } |
| 87 | + |
| 88 | + global $wgArticleAssessmentNeedJUICSS; |
| 89 | + if ( $wgArticleAssessmentNeedJUICSS ) { |
| 90 | + self::$styleFiles[] = array( 'src' => 'css/jquery-ui-1.7.2.css', 'version' => '1.7.2y' ); |
| 91 | + } |
| 92 | + foreach ( self::$styleFiles as $style ) { |
| 93 | + $out->addExtensionStyle( $wgExtensionAssetsPath . |
| 94 | + "/ArticleAssessmentPilot/{$style['src']}?{$style['version']}" |
| 95 | + ); |
| 96 | + } |
| 97 | + |
| 98 | + // Transforms messages into javascript object members |
| 99 | + self::$messages = array( |
| 100 | + 'articleassessment', |
| 101 | + 'articleassessment-desc', |
| 102 | + 'articleassessment-yourfeedback', |
| 103 | + 'articleassessment-pleaserate', |
| 104 | + 'articleassessment-submit', |
| 105 | + 'articleassessment-rating-wellsourced', |
| 106 | + 'articleassessment-rating-neutrality', |
| 107 | + 'articleassessment-rating-completeness', |
| 108 | + 'articleassessment-rating-readability', |
| 109 | + 'articleassessment-rating-wellsourced-tooltip', |
| 110 | + 'articleassessment-rating-neutrality-tooltip', |
| 111 | + 'articleassessment-rating-completeness-tooltip', |
| 112 | + 'articleassessment-rating-readability-tooltip', |
| 113 | + 'articleassessment-error', |
| 114 | + 'articleassessment-thanks', |
| 115 | + 'articleassessment-articlerating', |
| 116 | + 'articleassessment-featurefeedback', |
| 117 | + 'articleassessment-noratings', |
| 118 | + 'articleassessment-stalemessage-revisioncount', |
| 119 | + 'articleassessment-stalemessage-norevisioncount', |
| 120 | + 'articleassessment-results-show', |
| 121 | + 'articleassessment-results-hide', |
| 122 | + 'articleassessment-survey-title', |
| 123 | + 'articleassessment-survey-thanks', |
| 124 | + ); |
| 125 | + |
| 126 | + foreach ( self::$messages as $i => $message ) { |
| 127 | + // TODO: Not parsing or even preprocessing the messages would be more efficient, |
| 128 | + // but we can't do that until we have such nice things as JS-side {{PLURAL}} |
| 129 | + // Should be OK for now in a limited deployment scenario |
| 130 | + $escapedMessageValue = Xml::escapeJsString( wfMsgExt( $message, array( 'parseinline' ) ) ); |
| 131 | + $escapedMessageKey = Xml::escapeJsString( $message ); |
| 132 | + self::$messages[$i] = |
| 133 | + "'{$escapedMessageKey}':'{$escapedMessageValue}'"; |
| 134 | + } |
| 135 | + // Add javascript to document |
| 136 | + if ( count( self::$messages ) > 0 ) { |
| 137 | + $out->addScript( Html::inlineScript( |
| 138 | + '$j.ArticleAssessment.fn.addMessages({' . implode( ',', self::$messages ) . '});' |
| 139 | + ) ); |
| 140 | + } |
| 141 | + |
| 142 | + return true; |
| 143 | + } |
| 144 | + |
| 145 | + /** |
| 146 | + * Returns whether an article is in the specified category |
| 147 | + * |
| 148 | + * @param $articleId Integer: Article ID |
| 149 | + * @param $category String: The category name (without Category: prefix, with underscores) |
| 150 | + * |
| 151 | + * @return bool |
| 152 | + */ |
| 153 | + private static function isInCategory( $articleId, $category ) { |
| 154 | + $dbr = wfGetDB( DB_SLAVE ); |
| 155 | + return (bool)$dbr->selectRow( 'categorylinks', '1', |
| 156 | + array( |
| 157 | + 'cl_from' => $articleId, |
| 158 | + 'cl_to' => $category, |
| 159 | + ), |
| 160 | + __METHOD__ |
| 161 | + ); |
| 162 | + } |
| 163 | +} |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/ArticleAssessmentPilot.hooks.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 164 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/api/ApiQueryArticleAssessment.php |
— | — | @@ -0,0 +1,171 @@ |
| 2 | +<?php |
| 3 | +class ApiQueryArticleAssessment extends ApiQueryBase { |
| 4 | + public function __construct( $query, $moduleName ) { |
| 5 | + parent::__construct( $query, $moduleName, 'aa' ); |
| 6 | + } |
| 7 | + |
| 8 | + public function execute() { |
| 9 | + global $wgArticleAssessmentRatings; |
| 10 | + $params = $this->extractRequestParams(); |
| 11 | + |
| 12 | + $result = $this->getResult(); |
| 13 | + |
| 14 | + $this->addTables( array( 'article_assessment_pages', 'article_assessment_ratings' ) ); |
| 15 | + |
| 16 | + $this->addFields( array( 'aap_page_id', 'aap_total', 'aap_count', 'aap_rating_id', 'aar_rating' ) ); |
| 17 | + |
| 18 | + $this->addJoinConds( array( |
| 19 | + 'article_assessment_ratings' => array( 'LEFT JOIN', array( |
| 20 | + 'aar_id=aap_rating_id', |
| 21 | + 'aap_rating_id' => $wgArticleAssessmentRatings, |
| 22 | + ) |
| 23 | + ), |
| 24 | + ) ); |
| 25 | + |
| 26 | + $this->addWhereFld( 'aap_page_id', $params['pageid'] ); |
| 27 | + |
| 28 | + if ( $params['userrating'] ) { |
| 29 | + global $wgUser; |
| 30 | + |
| 31 | + $leftJoinConds = array( |
| 32 | + 'aa_page_id=aap_page_id', |
| 33 | + 'aa_rating_id=aap_rating_id', |
| 34 | + 'aa_user_id=' . $wgUser->getId() ); |
| 35 | + |
| 36 | + if ( $wgUser->isAnon() ) { |
| 37 | + if ( !isset( $params['anontoken'] ) ) { |
| 38 | + $this->dieUsageMsg( array( 'missingparam', 'anontoken' ) ); |
| 39 | + } elseif ( strlen( $params['anontoken'] ) != 32 ) { |
| 40 | + $this->dieUsage( 'The anontoken is not 32 characters', 'invalidtoken' ); |
| 41 | + } |
| 42 | + |
| 43 | + $leftJoinConds['aa_user_anon_token'] = $params['anontoken']; |
| 44 | + } |
| 45 | + |
| 46 | + $this->addTables( 'article_assessment' ); |
| 47 | + $this->addJoinConds( array( |
| 48 | + 'article_assessment' => array( 'LEFT JOIN', $leftJoinConds ), |
| 49 | + ) |
| 50 | + ); |
| 51 | + |
| 52 | + $this->addFields( array( 'aa_rating_value', 'aa_revision' ) ); |
| 53 | + |
| 54 | + $this->addOption( 'ORDER BY', 'aa_revision DESC' ); |
| 55 | + } |
| 56 | + |
| 57 | + $this->addOption( 'LIMIT', count( $wgArticleAssessmentRatings ) ); |
| 58 | + |
| 59 | + $res = $this->select( __METHOD__ ); |
| 60 | + |
| 61 | + $ratings = array(); |
| 62 | + |
| 63 | + $userRatedArticle = false; |
| 64 | + |
| 65 | + foreach ( $res as $row ) { |
| 66 | + $pageId = $row->aap_page_id; |
| 67 | + |
| 68 | + if ( !isset( $ratings[$pageId] ) ) { |
| 69 | + $page = array( |
| 70 | + 'pageid' => $pageId, |
| 71 | + ); |
| 72 | + |
| 73 | + if ( $params['userrating'] ) { |
| 74 | + $page['revid'] = $row->aa_revision; |
| 75 | + } |
| 76 | + |
| 77 | + $ratings[$pageId] = $page; |
| 78 | + } |
| 79 | + |
| 80 | + $thisRow = array( |
| 81 | + 'ratingid' => $row->aap_rating_id, |
| 82 | + 'ratingdesc' => $row->aar_rating, |
| 83 | + 'total' => $row->aap_total, |
| 84 | + 'count' => $row->aap_count, |
| 85 | + ); |
| 86 | + |
| 87 | + if ( $params['userrating'] && !is_null( $row->aa_rating_value ) ) { |
| 88 | + $thisRow['userrating'] = $row->aa_rating_value; |
| 89 | + |
| 90 | + $userRatedArticle = true; |
| 91 | + } |
| 92 | + |
| 93 | + $ratings[$pageId]['ratings'][] = $thisRow; |
| 94 | + } |
| 95 | + |
| 96 | + //Only can actually be "stale" if the user has rated the article before |
| 97 | + if ( $params['userrating'] && $userRatedArticle ) { |
| 98 | + $dbr = wfGetDb( DB_SLAVE ); |
| 99 | + |
| 100 | + global $wgArticleAssessmentStaleCount; |
| 101 | + |
| 102 | + $res = $dbr->select( |
| 103 | + 'revision', |
| 104 | + 'rev_id', |
| 105 | + array( |
| 106 | + 'rev_page' => $params['pageid'], |
| 107 | + 'rev_id > ' . $ratings[$pageId]['revid'] |
| 108 | + ), |
| 109 | + __METHOD__, |
| 110 | + array ( 'LIMIT', $wgArticleAssessmentStaleCount + 1 ) |
| 111 | + ); |
| 112 | + |
| 113 | + if ( $res && $dbr->numRows( $res ) > $wgArticleAssessmentStaleCount ) { |
| 114 | + //it's stale! |
| 115 | + $ratings[$params['pageid']]['stale'] = ''; |
| 116 | + } |
| 117 | + } |
| 118 | + |
| 119 | + foreach ( $ratings as $rat ) { |
| 120 | + $result->setIndexedTagName( $rat['ratings'], 'r' ); |
| 121 | + $result->addValue( array( 'query', $this->getModuleName() ), null, $rat ); |
| 122 | + } |
| 123 | + |
| 124 | + $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'aa' ); |
| 125 | + } |
| 126 | + |
| 127 | + public function getAllowedParams() { |
| 128 | + return array( |
| 129 | + 'pageid' => array( |
| 130 | + ApiBase::PARAM_REQUIRED => true, |
| 131 | + ApiBase::PARAM_ISMULTI => false, |
| 132 | + ApiBase::PARAM_TYPE => 'integer', |
| 133 | + ), |
| 134 | + 'userrating' => false, |
| 135 | + 'anontoken' => null, |
| 136 | + ); |
| 137 | + } |
| 138 | + |
| 139 | + public function getParamDescription() { |
| 140 | + return array( |
| 141 | + 'pageid' => 'Page ID to get assessments for', |
| 142 | + 'userrating' => "Whether to get the current user's ratings for the specific rev/article", |
| 143 | + 'anontoken' => 'Token for anonymous users', |
| 144 | + ); |
| 145 | + } |
| 146 | + |
| 147 | + public function getDescription() { |
| 148 | + return array( |
| 149 | + 'List all article assessments' |
| 150 | + ); |
| 151 | + } |
| 152 | + |
| 153 | + public function getPossibleErrors() { |
| 154 | + return array_merge( parent::getPossibleErrors(), array( |
| 155 | + array( 'missingparam', 'anontoken' ), |
| 156 | + array( 'code' => 'invalidtoken', 'info' => 'The anontoken is not 32 characters' ), |
| 157 | + ) |
| 158 | + ); |
| 159 | + } |
| 160 | + |
| 161 | + protected function getExamples() { |
| 162 | + return array( |
| 163 | + 'api.php?action=query&list=articleassessment', |
| 164 | + 'api.php?action=query&list=articleassessment&aapageid=1', |
| 165 | + 'api.php?action=query&list=articleassessment&aapageid=1&aauserrating', |
| 166 | + ); |
| 167 | + } |
| 168 | + |
| 169 | + public function getVersion() { |
| 170 | + return __CLASS__ . ': $Id$'; |
| 171 | + } |
| 172 | +} |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/api/ApiQueryArticleAssessment.php |
___________________________________________________________________ |
Added: svn:keywords |
1 | 173 | + Id |
Added: svn:eol-style |
2 | 174 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/api/ApiArticleAssessment.php |
— | — | @@ -0,0 +1,237 @@ |
| 2 | +<?php |
| 3 | +class ApiArticleAssessment extends ApiBase { |
| 4 | + public function __construct( $query, $moduleName ) { |
| 5 | + parent::__construct( $query, $moduleName, '' ); |
| 6 | + } |
| 7 | + |
| 8 | + public function execute() { |
| 9 | + global $wgUser, $wgArticleAssessmentRatings; |
| 10 | + $params = $this->extractRequestParams(); |
| 11 | + |
| 12 | + $token = array(); |
| 13 | + if ( $wgUser->isAnon() ) { |
| 14 | + if ( !isset( $params['anontoken'] ) ) { |
| 15 | + $this->dieUsageMsg( array( 'missingparam', 'anontoken' ) ); |
| 16 | + } elseif ( strlen( $params['anontoken'] ) != 32 ) { |
| 17 | + $this->dieUsage( 'The anontoken is not 32 characters', 'invalidtoken' ); |
| 18 | + } |
| 19 | + |
| 20 | + $token['aa_user_anon_token'] = $params['anontoken']; |
| 21 | + } |
| 22 | + |
| 23 | + $dbr = wfGetDB( DB_SLAVE ); |
| 24 | + |
| 25 | + // Query the latest ratings by this user for this page, |
| 26 | + // possibly for an older revision |
| 27 | + $res = $dbr->select( |
| 28 | + 'article_assessment', |
| 29 | + array( 'aa_rating_id', 'aa_rating_value', 'aa_revision' ), |
| 30 | + array_merge( |
| 31 | + array( |
| 32 | + 'aa_user_id' => $wgUser->getId(), |
| 33 | + 'aa_user_text' => $wgUser->getName(), |
| 34 | + 'aa_page_id' => $params['pageid'], |
| 35 | + 'aa_rating_id' => $wgArticleAssessmentRatings, |
| 36 | + ), |
| 37 | + $token |
| 38 | + ), |
| 39 | + __METHOD__, |
| 40 | + array( |
| 41 | + 'ORDER BY' => 'aa_revision DESC', |
| 42 | + 'LIMIT' => count( $wgArticleAssessmentRatings ), |
| 43 | + ) |
| 44 | + ); |
| 45 | + |
| 46 | + $lastRatings = array(); |
| 47 | + |
| 48 | + foreach ( $res as $row ) { |
| 49 | + $lastRatings[$row->aa_rating_id] = $row->aa_rating_value; |
| 50 | + } |
| 51 | + |
| 52 | + $pageId = $params['pageid']; |
| 53 | + $revisionId = $params['revid']; |
| 54 | + |
| 55 | + foreach( $wgArticleAssessmentRatings as $rating ) { |
| 56 | + $lastRating = false; |
| 57 | + if ( isset( $lastRatings[$rating] ) ) { |
| 58 | + $lastRating = $lastRatings[$rating]; |
| 59 | + } |
| 60 | + |
| 61 | + $thisRating = false; |
| 62 | + if ( isset( $params["r{$rating}"] ) ) { |
| 63 | + $thisRating = $params["r{$rating}"]; |
| 64 | + } |
| 65 | + |
| 66 | + $this->insertPageRating( $pageId, $rating, ( $thisRating - $lastRating ), |
| 67 | + ( $lastRating === false && $thisRating !== false ) |
| 68 | + ); |
| 69 | + |
| 70 | + $this->insertUserRatings( $pageId, $revisionId, $wgUser, $token, $rating, $thisRating ); |
| 71 | + } |
| 72 | + |
| 73 | + $r = array( 'result' => 'Success' ); |
| 74 | + $this->getResult()->addValue( null, $this->getModuleName(), $r ); |
| 75 | + } |
| 76 | + |
| 77 | + /** |
| 78 | + * Inserts (or Updates, where appropriate) the aggregate page rating |
| 79 | + * |
| 80 | + * @param $pageId Integer: Page Id |
| 81 | + * @param $ratingId Integer: Rating Id |
| 82 | + * @param $updateAddition Integer: Difference between user's last rating (if applicable) |
| 83 | + * @param $newRating Boolean: Whether this is a new rating (for update, whether this increases the count) |
| 84 | + */ |
| 85 | + private function insertPageRating( $pageId, $ratingId, $updateAddition, $newRating ) { |
| 86 | + $dbw = wfGetDB( DB_MASTER ); |
| 87 | + |
| 88 | + $dbw->insert( |
| 89 | + 'article_assessment_pages', |
| 90 | + array( |
| 91 | + 'aap_page_id' => $pageId, |
| 92 | + 'aap_total' => 0, |
| 93 | + 'aap_count' => 0, |
| 94 | + 'aap_rating_id' => $ratingId, |
| 95 | + ), |
| 96 | + __METHOD__, |
| 97 | + array( 'IGNORE' ) |
| 98 | + ); |
| 99 | + |
| 100 | + $dbw->update( |
| 101 | + 'article_assessment_pages', |
| 102 | + array( |
| 103 | + 'aap_total = aap_total + ' . $updateAddition, |
| 104 | + 'aap_count = aap_count + ' . ( $newRating ? 1 : 0 ), |
| 105 | + ), |
| 106 | + array( |
| 107 | + 'aap_page_id' => $pageId, |
| 108 | + 'aap_rating_id' => $ratingId, |
| 109 | + ), |
| 110 | + __METHOD__ |
| 111 | + ); |
| 112 | + } |
| 113 | + |
| 114 | + /** |
| 115 | + * Inserts (or Updates, where appropriate) the users ratings for a specific revision |
| 116 | + * |
| 117 | + * @param $pageId Integer: Page Id |
| 118 | + * @param $revisionId Integer: Revision Id |
| 119 | + * @param $user User: Current User object |
| 120 | + * @param $token Array: Token if necessary |
| 121 | + * @param $ratingId Integer: Rating Id |
| 122 | + * @param $ratingValue Integer: Value of the Rating |
| 123 | + */ |
| 124 | + private function insertUserRatings( $pageId, $revisionId, $user, $token, $ratingId, $ratingValue ) { |
| 125 | + $dbw = wfGetDB( DB_MASTER ); |
| 126 | + |
| 127 | + $timestamp = $dbw->timestamp(); |
| 128 | + |
| 129 | + $dbw->insert( |
| 130 | + 'article_assessment', |
| 131 | + array_merge( |
| 132 | + array( |
| 133 | + 'aa_page_id' => $pageId, |
| 134 | + 'aa_user_id' => $user->getId(), |
| 135 | + 'aa_user_text' => $user->getName(), |
| 136 | + 'aa_revision' => $revisionId, |
| 137 | + 'aa_timestamp' => $timestamp, |
| 138 | + 'aa_rating_id' => $ratingId, |
| 139 | + 'aa_rating_value' => $ratingValue, |
| 140 | + ), |
| 141 | + $token |
| 142 | + ), |
| 143 | + __METHOD__, |
| 144 | + array( 'IGNORE' ) |
| 145 | + ); |
| 146 | + |
| 147 | + if ( !$dbw->affectedRows() ) { |
| 148 | + $dbw->update( |
| 149 | + 'article_assessment', |
| 150 | + array( |
| 151 | + 'aa_timestamp' => $timestamp, |
| 152 | + 'aa_rating_value' => $ratingValue, |
| 153 | + ), |
| 154 | + array_merge( |
| 155 | + array( |
| 156 | + 'aa_page_id' => $pageId, |
| 157 | + 'aa_user_text' => $user->getName(), |
| 158 | + 'aa_revision' => $revisionId, |
| 159 | + 'aa_rating_id' => $ratingId, |
| 160 | + ), |
| 161 | + $token |
| 162 | + ), |
| 163 | + __METHOD__ |
| 164 | + ); |
| 165 | + } |
| 166 | + } |
| 167 | + |
| 168 | + public function getAllowedParams() { |
| 169 | + global $wgArticleAssessmentRatings; |
| 170 | + $ret = array( |
| 171 | + 'pageid' => array( |
| 172 | + ApiBase::PARAM_TYPE => 'integer', |
| 173 | + ApiBase::PARAM_REQUIRED => true, |
| 174 | + ApiBase::PARAM_ISMULTI => false, |
| 175 | + ), |
| 176 | + 'revid' => array( |
| 177 | + ApiBase::PARAM_TYPE => 'integer', |
| 178 | + ApiBase::PARAM_REQUIRED => true, |
| 179 | + ApiBase::PARAM_ISMULTI => false, |
| 180 | + ), |
| 181 | + 'anontoken' => null, |
| 182 | + ); |
| 183 | + |
| 184 | + foreach( $wgArticleAssessmentRatings as $rating ) { |
| 185 | + $ret["r{$rating}"] = array( |
| 186 | + ApiBase::PARAM_TYPE => 'integer', |
| 187 | + ApiBase::PARAM_DFLT => 0, |
| 188 | + ApiBase::PARAM_MIN => 0, |
| 189 | + ApiBase::PARAM_MAX => 5, |
| 190 | + ); |
| 191 | + } |
| 192 | + return $ret; |
| 193 | + } |
| 194 | + |
| 195 | + public function getParamDescription() { |
| 196 | + global $wgArticleAssessmentRatings; |
| 197 | + $ret = array( |
| 198 | + 'pageid' => 'Page ID to submit assessment for', |
| 199 | + 'revid' => 'Revision ID to submit assessment for', |
| 200 | + 'anontoken' => 'Token for anonymous users', |
| 201 | + ); |
| 202 | + foreach( $wgArticleAssessmentRatings as $rating ) { |
| 203 | + $ret["r{$rating}"] = "Rating {$rating}"; |
| 204 | + } |
| 205 | + return $ret; |
| 206 | + } |
| 207 | + |
| 208 | + public function getDescription() { |
| 209 | + return array( |
| 210 | + 'Submit article assessments' |
| 211 | + ); |
| 212 | + } |
| 213 | + |
| 214 | + public function mustBePosted() { |
| 215 | + return true; |
| 216 | + } |
| 217 | + |
| 218 | + public function isWriteMode() { |
| 219 | + return true; |
| 220 | + } |
| 221 | + |
| 222 | + public function getPossibleErrors() { |
| 223 | + return array_merge( parent::getPossibleErrors(), array( |
| 224 | + array( 'missingparam', 'anontoken' ), |
| 225 | + array( 'code' => 'invalidtoken', 'info' => 'The anontoken is not 32 characters' ), |
| 226 | + ) ); |
| 227 | + } |
| 228 | + |
| 229 | + protected function getExamples() { |
| 230 | + return array( |
| 231 | + 'api.php?action=articleassessment' |
| 232 | + ); |
| 233 | + } |
| 234 | + |
| 235 | + public function getVersion() { |
| 236 | + return __CLASS__ . ': $Id$'; |
| 237 | + } |
| 238 | +} |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/api/ApiArticleAssessment.php |
___________________________________________________________________ |
Added: svn:keywords |
1 | 239 | + Id |
Added: svn:eol-style |
2 | 240 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.tipsy.js |
— | — | @@ -0,0 +1,202 @@ |
| 2 | +// tipsy, facebook style tooltips for jquery |
| 3 | +// version 1.0.0a |
| 4 | +// (c) 2008-2010 jason frame [jason@onehackoranother.com] |
| 5 | +// released under the MIT license |
| 6 | + |
| 7 | +(function($) { |
| 8 | + |
| 9 | + function Tipsy(element, options) { |
| 10 | + this.$element = $(element); |
| 11 | + this.options = options; |
| 12 | + this.enabled = true; |
| 13 | + this.fixTitle(); |
| 14 | + } |
| 15 | + |
| 16 | + Tipsy.prototype = { |
| 17 | + show: function() { |
| 18 | + var title = this.getTitle(); |
| 19 | + if (title && this.enabled) { |
| 20 | + var $tip = this.tip(); |
| 21 | + |
| 22 | + $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title); |
| 23 | + $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity |
| 24 | + $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body); |
| 25 | + |
| 26 | + var pos = $.extend({}, this.$element.offset(), { |
| 27 | + width: this.$element[0].offsetWidth, |
| 28 | + height: this.$element[0].offsetHeight |
| 29 | + }); |
| 30 | + |
| 31 | + var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight; |
| 32 | + var gravity = (typeof this.options.gravity == 'function') |
| 33 | + ? this.options.gravity.call(this.$element[0]) |
| 34 | + : this.options.gravity; |
| 35 | + |
| 36 | + var tp; |
| 37 | + switch (gravity.charAt(0)) { |
| 38 | + case 'n': |
| 39 | + tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; |
| 40 | + break; |
| 41 | + case 's': |
| 42 | + tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2}; |
| 43 | + break; |
| 44 | + case 'e': |
| 45 | + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset}; |
| 46 | + break; |
| 47 | + case 'w': |
| 48 | + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset}; |
| 49 | + break; |
| 50 | + } |
| 51 | + |
| 52 | + if (gravity.length == 2) { |
| 53 | + if (gravity.charAt(1) == 'w') { |
| 54 | + tp.left = pos.left + pos.width / 2 - 15; |
| 55 | + } else { |
| 56 | + tp.left = pos.left + pos.width / 2 - actualWidth + 15; |
| 57 | + } |
| 58 | + } |
| 59 | + |
| 60 | + $tip.css(tp).addClass('tipsy-' + gravity); |
| 61 | + |
| 62 | + if (this.options.fade) { |
| 63 | + $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}); |
| 64 | + } else { |
| 65 | + $tip.css({visibility: 'visible', opacity: this.options.opacity}); |
| 66 | + } |
| 67 | + } |
| 68 | + }, |
| 69 | + |
| 70 | + hide: function() { |
| 71 | + if (this.options.fade) { |
| 72 | + this.tip().stop().fadeOut(function() { $(this).remove(); }); |
| 73 | + } else { |
| 74 | + this.tip().remove(); |
| 75 | + } |
| 76 | + }, |
| 77 | + |
| 78 | + fixTitle: function() { |
| 79 | + var $e = this.$element; |
| 80 | + if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') { |
| 81 | + $e.attr('original-title', $e.attr('title') || '').removeAttr('title'); |
| 82 | + } |
| 83 | + }, |
| 84 | + |
| 85 | + getTitle: function() { |
| 86 | + var title, $e = this.$element, o = this.options; |
| 87 | + this.fixTitle(); |
| 88 | + var title, o = this.options; |
| 89 | + if (typeof o.title == 'string') { |
| 90 | + title = $e.attr(o.title == 'title' ? 'original-title' : o.title); |
| 91 | + } else if (typeof o.title == 'function') { |
| 92 | + title = o.title.call($e[0]); |
| 93 | + } |
| 94 | + title = ('' + title).replace(/(^\s*|\s*$)/, ""); |
| 95 | + return title || o.fallback; |
| 96 | + }, |
| 97 | + |
| 98 | + tip: function() { |
| 99 | + if (!this.$tip) { |
| 100 | + this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'); |
| 101 | + } |
| 102 | + return this.$tip; |
| 103 | + }, |
| 104 | + |
| 105 | + validate: function() { |
| 106 | + if (!this.$element[0].parentNode) { |
| 107 | + this.hide(); |
| 108 | + this.$element = null; |
| 109 | + this.options = null; |
| 110 | + } |
| 111 | + }, |
| 112 | + |
| 113 | + enable: function() { this.enabled = true; }, |
| 114 | + disable: function() { this.enabled = false; }, |
| 115 | + toggleEnabled: function() { this.enabled = !this.enabled; } |
| 116 | + }; |
| 117 | + |
| 118 | + $.fn.tipsy = function(options) { |
| 119 | + |
| 120 | + if (options === true) { |
| 121 | + return this.data('tipsy'); |
| 122 | + } else if (typeof options == 'string') { |
| 123 | + var tipsy = this.data('tipsy'); |
| 124 | + if (tipsy) tipsy[options](); |
| 125 | + return this; |
| 126 | + } |
| 127 | + |
| 128 | + options = $.extend({}, $.fn.tipsy.defaults, options); |
| 129 | + |
| 130 | + function get(ele) { |
| 131 | + var tipsy = $.data(ele, 'tipsy'); |
| 132 | + if (!tipsy) { |
| 133 | + tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); |
| 134 | + $.data(ele, 'tipsy', tipsy); |
| 135 | + } |
| 136 | + return tipsy; |
| 137 | + } |
| 138 | + |
| 139 | + function enter() { |
| 140 | + var tipsy = get(this); |
| 141 | + tipsy.hoverState = 'in'; |
| 142 | + if (options.delayIn == 0) { |
| 143 | + tipsy.show(); |
| 144 | + } else { |
| 145 | + tipsy.fixTitle(); |
| 146 | + setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn); |
| 147 | + } |
| 148 | + }; |
| 149 | + |
| 150 | + function leave() { |
| 151 | + var tipsy = get(this); |
| 152 | + tipsy.hoverState = 'out'; |
| 153 | + if (options.delayOut == 0) { |
| 154 | + tipsy.hide(); |
| 155 | + } else { |
| 156 | + setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut); |
| 157 | + } |
| 158 | + }; |
| 159 | + |
| 160 | + if (!options.live) this.each(function() { get(this); }); |
| 161 | + |
| 162 | + if (options.trigger != 'manual') { |
| 163 | + var binder = options.live ? 'live' : 'bind', |
| 164 | + eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus', |
| 165 | + eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; |
| 166 | + this[binder](eventIn, enter)[binder](eventOut, leave); |
| 167 | + } |
| 168 | + |
| 169 | + return this; |
| 170 | + |
| 171 | + }; |
| 172 | + |
| 173 | + $.fn.tipsy.defaults = { |
| 174 | + delayIn: 0, |
| 175 | + delayOut: 0, |
| 176 | + fade: false, |
| 177 | + fallback: '', |
| 178 | + gravity: 'n', |
| 179 | + html: false, |
| 180 | + live: false, |
| 181 | + offset: 0, |
| 182 | + opacity: 0.8, |
| 183 | + title: 'title', |
| 184 | + trigger: 'hover' |
| 185 | + }; |
| 186 | + |
| 187 | + // Overwrite this method to provide options on a per-element basis. |
| 188 | + // For example, you could store the gravity in a 'tipsy-gravity' attribute: |
| 189 | + // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' }); |
| 190 | + // (remember - do not modify 'options' in place!) |
| 191 | + $.fn.tipsy.elementOptions = function(ele, options) { |
| 192 | + return $.metadata ? $.extend({}, options, $(ele).metadata()) : options; |
| 193 | + }; |
| 194 | + |
| 195 | + $.fn.tipsy.autoNS = function() { |
| 196 | + return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n'; |
| 197 | + }; |
| 198 | + |
| 199 | + $.fn.tipsy.autoWE = function() { |
| 200 | + return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w'; |
| 201 | + }; |
| 202 | + |
| 203 | +})(jQuery); |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.tipsy.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 204 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.cookie.js |
— | — | @@ -0,0 +1,97 @@ |
| 2 | +/** |
| 3 | + * Cookie plugin |
| 4 | + * |
| 5 | + * Copyright (c) 2006 Klaus Hartl (stilbuero.de) |
| 6 | + * Dual licensed under the MIT and GPL licenses: |
| 7 | + * http://www.opensource.org/licenses/mit-license.php |
| 8 | + * http://www.gnu.org/licenses/gpl.html |
| 9 | + * |
| 10 | + */ |
| 11 | + |
| 12 | +/** |
| 13 | + * Create a cookie with the given name and value and other optional parameters. |
| 14 | + * |
| 15 | + * @example $.cookie('the_cookie', 'the_value'); |
| 16 | + * @desc Set the value of a cookie. |
| 17 | + * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); |
| 18 | + * @desc Create a cookie with all available options. |
| 19 | + * @example $.cookie('the_cookie', 'the_value'); |
| 20 | + * @desc Create a session cookie. |
| 21 | + * @example $.cookie('the_cookie', null); |
| 22 | + * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain |
| 23 | + * used when the cookie was set. |
| 24 | + * |
| 25 | + * @param String name The name of the cookie. |
| 26 | + * @param String value The value of the cookie. |
| 27 | + * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. |
| 28 | + * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. |
| 29 | + * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. |
| 30 | + * If set to null or omitted, the cookie will be a session cookie and will not be retained |
| 31 | + * when the the browser exits. |
| 32 | + * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). |
| 33 | + * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). |
| 34 | + * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will |
| 35 | + * require a secure protocol (like HTTPS). |
| 36 | + * @type undefined |
| 37 | + * |
| 38 | + * @name $.cookie |
| 39 | + * @cat Plugins/Cookie |
| 40 | + * @author Klaus Hartl/klaus.hartl@stilbuero.de |
| 41 | + */ |
| 42 | + |
| 43 | +/** |
| 44 | + * Get the value of a cookie with the given name. |
| 45 | + * |
| 46 | + * @example $.cookie('the_cookie'); |
| 47 | + * @desc Get the value of a cookie. |
| 48 | + * |
| 49 | + * @param String name The name of the cookie. |
| 50 | + * @return The value of the cookie. |
| 51 | + * @type String |
| 52 | + * |
| 53 | + * @name $.cookie |
| 54 | + * @cat Plugins/Cookie |
| 55 | + * @author Klaus Hartl/klaus.hartl@stilbuero.de |
| 56 | + */ |
| 57 | +jQuery.cookie = function(name, value, options) { |
| 58 | + if (typeof value != 'undefined') { // name and value given, set cookie |
| 59 | + options = options || {}; |
| 60 | + if (value === null) { |
| 61 | + value = ''; |
| 62 | + options.expires = -1; |
| 63 | + } |
| 64 | + var expires = ''; |
| 65 | + if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { |
| 66 | + var date; |
| 67 | + if (typeof options.expires == 'number') { |
| 68 | + date = new Date(); |
| 69 | + date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); |
| 70 | + } else { |
| 71 | + date = options.expires; |
| 72 | + } |
| 73 | + expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE |
| 74 | + } |
| 75 | + // CAUTION: Needed to parenthesize options.path and options.domain |
| 76 | + // in the following expressions, otherwise they evaluate to undefined |
| 77 | + // in the packed version for some reason... |
| 78 | + var path = options.path ? '; path=' + (options.path) : ''; |
| 79 | + var domain = options.domain ? '; domain=' + (options.domain) : ''; |
| 80 | + var secure = options.secure ? '; secure' : ''; |
| 81 | + document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); |
| 82 | + } else { // only name given, get cookie |
| 83 | + var cookieValue = null; |
| 84 | + if (document.cookie && document.cookie != '') { |
| 85 | + var cookies = document.cookie.split(';'); |
| 86 | + for (var i = 0; i < cookies.length; i++) { |
| 87 | + var cookie = jQuery.trim(cookies[i]); |
| 88 | + // Does this cookie string begin with the name we want? |
| 89 | + if (cookie.substring(0, name.length + 1) == (name + '=')) { |
| 90 | + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); |
| 91 | + break; |
| 92 | + } |
| 93 | + } |
| 94 | + } |
| 95 | + return cookieValue; |
| 96 | + } |
| 97 | +}; |
| 98 | + |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.cookie.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 99 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jui.combined.min.js |
— | — | @@ -0,0 +1,345 @@ |
| 2 | +;jQuery.ui||(function($){var _remove=$.fn.remove,isFF2=$.browser.mozilla&&(parseFloat($.browser.version)<1.9);$.ui={version:"1.7.1",plugin:{add:function(module,option,set){var proto=$.ui[module].prototype;for(var i in set){proto.plugins[i]=proto.plugins[i]||[];proto.plugins[i].push([option,set[i]]);}},call:function(instance,name,args){var set=instance.plugins[name];if(!set||!instance.element[0].parentNode){return;} |
| 3 | +for(var i=0;i<set.length;i++){if(instance.options[set[i][0]]){set[i][1].apply(instance.element,args);}}}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b);},hasScroll:function(el,a){if($(el).css('overflow')=='hidden'){return false;} |
| 4 | +var scroll=(a&&a=='left')?'scrollLeft':'scrollTop',has=false;if(el[scroll]>0){return true;} |
| 5 | +el[scroll]=1;has=(el[scroll]>0);el[scroll]=0;return has;},isOverAxis:function(x,reference,size){return(x>reference)&&(x<(reference+size));},isOver:function(y,x,top,left,height,width){return $.ui.isOverAxis(y,top,height)&&$.ui.isOverAxis(x,left,width);},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(isFF2){var attr=$.attr,removeAttr=$.fn.removeAttr,ariaNS="http://www.w3.org/2005/07/aaa",ariaState=/^aria-/,ariaRole=/^wairole:/;$.attr=function(elem,name,value){var set=value!==undefined;return(name=='role'?(set?attr.call(this,elem,name,"wairole:"+value):(attr.apply(this,arguments)||"").replace(ariaRole,"")):(ariaState.test(name)?(set?elem.setAttributeNS(ariaNS,name.replace(ariaState,"aaa:"),value):attr.call(this,elem,name.replace(ariaState,"aaa:"))):attr.apply(this,arguments)));};$.fn.removeAttr=function(name){return(ariaState.test(name)?this.each(function(){this.removeAttributeNS(ariaNS,name.replace(ariaState,""));}):removeAttr.call(this,name));};} |
| 6 | +$.fn.extend({remove:function(){$("*",this).add(this).each(function(){$(this).triggerHandler("remove");});return _remove.apply(this,arguments);},enableSelection:function(){return this.attr('unselectable','off').css('MozUserSelect','').unbind('selectstart.ui');},disableSelection:function(){return this.attr('unselectable','on').css('MozUserSelect','none').bind('selectstart.ui',function(){return false;});},scrollParent:function(){var scrollParent;if(($.browser.msie&&(/(static|relative)/).test(this.css('position')))||(/absolute/).test(this.css('position'))){scrollParent=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test($.curCSS(this,'position',1))&&(/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}).eq(0);}else{scrollParent=this.parents().filter(function(){return(/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}).eq(0);} |
| 7 | +return(/fixed/).test(this.css('position'))||!scrollParent.length?$(document):scrollParent;}});$.extend($.expr[':'],{data:function(elem,i,match){return!!$.data(elem,match[3]);},focusable:function(element){var nodeName=element.nodeName.toLowerCase(),tabIndex=$.attr(element,'tabindex');return(/input|select|textarea|button|object/.test(nodeName)?!element.disabled:'a'==nodeName||'area'==nodeName?element.href||!isNaN(tabIndex):!isNaN(tabIndex))&&!$(element)['area'==nodeName?'parents':'closest'](':hidden').length;},tabbable:function(element){var tabIndex=$.attr(element,'tabindex');return(isNaN(tabIndex)||tabIndex>=0)&&$(element).is(':focusable');}});function getter(namespace,plugin,method,args){function getMethods(type){var methods=$[namespace][plugin][type]||[];return(typeof methods=='string'?methods.split(/,?\s+/):methods);} |
| 8 | +var methods=getMethods('getter');if(args.length==1&&typeof args[0]=='string'){methods=methods.concat(getMethods('getterSetter'));} |
| 9 | +return($.inArray(method,methods)!=-1);} |
| 10 | +$.widget=function(name,prototype){var namespace=name.split(".")[0];name=name.split(".")[1];$.fn[name]=function(options){var isMethodCall=(typeof options=='string'),args=Array.prototype.slice.call(arguments,1);if(isMethodCall&&options.substring(0,1)=='_'){return this;} |
| 11 | +if(isMethodCall&&getter(namespace,name,options,args)){var instance=$.data(this[0],name);return(instance?instance[options].apply(instance,args):undefined);} |
| 12 | +return this.each(function(){var instance=$.data(this,name);(!instance&&!isMethodCall&&$.data(this,name,new $[namespace][name](this,options))._init());(instance&&isMethodCall&&$.isFunction(instance[options])&&instance[options].apply(instance,args));});};$[namespace]=$[namespace]||{};$[namespace][name]=function(element,options){var self=this;this.namespace=namespace;this.widgetName=name;this.widgetEventPrefix=$[namespace][name].eventPrefix||name;this.widgetBaseClass=namespace+'-'+name;this.options=$.extend({},$.widget.defaults,$[namespace][name].defaults,$.metadata&&$.metadata.get(element)[name],options);this.element=$(element).bind('setData.'+name,function(event,key,value){if(event.target==element){return self._setData(key,value);}}).bind('getData.'+name,function(event,key){if(event.target==element){return self._getData(key);}}).bind('remove',function(){return self.destroy();});};$[namespace][name].prototype=$.extend({},$.widget.prototype,prototype);$[namespace][name].getterSetter='option';};$.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+'-disabled'+' '+this.namespace+'-state-disabled').removeAttr('aria-disabled');},option:function(key,value){var options=key,self=this;if(typeof key=="string"){if(value===undefined){return this._getData(key);} |
| 13 | +options={};options[key]=value;} |
| 14 | +$.each(options,function(key,value){self._setData(key,value);});},_getData:function(key){return this.options[key];},_setData:function(key,value){this.options[key]=value;if(key=='disabled'){this.element |
| 15 | +[value?'addClass':'removeClass'](this.widgetBaseClass+'-disabled'+' '+ |
| 16 | +this.namespace+'-state-disabled').attr("aria-disabled",value);}},enable:function(){this._setData('disabled',false);},disable:function(){this._setData('disabled',true);},_trigger:function(type,event,data){var callback=this.options[type],eventName=(type==this.widgetEventPrefix?type:this.widgetEventPrefix+type);event=$.Event(event);event.type=eventName;if(event.originalEvent){for(var i=$.event.props.length,prop;i;){prop=$.event.props[--i];event[prop]=event.originalEvent[prop];}} |
| 17 | +this.element.trigger(event,data);return!($.isFunction(callback)&&callback.call(this.element[0],event,data)===false||event.isDefaultPrevented());}};$.widget.defaults={disabled:false};$.ui.mouse={_mouseInit:function(){var self=this;this.element.bind('mousedown.'+this.widgetName,function(event){return self._mouseDown(event);}).bind('click.'+this.widgetName,function(event){if(self._preventClickEvent){self._preventClickEvent=false;event.stopImmediatePropagation();return false;}});if($.browser.msie){this._mouseUnselectable=this.element.attr('unselectable');this.element.attr('unselectable','on');} |
| 18 | +this.started=false;},_mouseDestroy:function(){this.element.unbind('.'+this.widgetName);($.browser.msie&&this.element.attr('unselectable',this._mouseUnselectable));},_mouseDown:function(event){event.originalEvent=event.originalEvent||{};if(event.originalEvent.mouseHandled){return;} |
| 19 | +(this._mouseStarted&&this._mouseUp(event));this._mouseDownEvent=event;var self=this,btnIsLeft=(event.which==1),elIsCancel=(typeof this.options.cancel=="string"?$(event.target).parents().add(event.target).filter(this.options.cancel).length:false);if(!btnIsLeft||elIsCancel||!this._mouseCapture(event)){return true;} |
| 20 | +this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){self.mouseDelayMet=true;},this.options.delay);} |
| 21 | +if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(event)!==false);if(!this._mouseStarted){event.preventDefault();return true;}} |
| 22 | +this._mouseMoveDelegate=function(event){return self._mouseMove(event);};this._mouseUpDelegate=function(event){return self._mouseUp(event);};$(document).bind('mousemove.'+this.widgetName,this._mouseMoveDelegate).bind('mouseup.'+this.widgetName,this._mouseUpDelegate);($.browser.safari||event.preventDefault());event.originalEvent.mouseHandled=true;return true;},_mouseMove:function(event){if($.browser.msie&&!event.button){return this._mouseUp(event);} |
| 23 | +if(this._mouseStarted){this._mouseDrag(event);return event.preventDefault();} |
| 24 | +if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,event)!==false);(this._mouseStarted?this._mouseDrag(event):this._mouseUp(event));} |
| 25 | +return!this._mouseStarted;},_mouseUp:function(event){$(document).unbind('mousemove.'+this.widgetName,this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(event.target==this._mouseDownEvent.target);this._mouseStop(event);} |
| 26 | +return false;},_mouseDistanceMet:function(event){return(Math.max(Math.abs(this._mouseDownEvent.pageX-event.pageX),Math.abs(this._mouseDownEvent.pageY-event.pageY))>=this.options.distance);},_mouseDelayMet:function(event){return this.mouseDelayMet;},_mouseStart:function(event){},_mouseDrag:function(event){},_mouseStop:function(event){},_mouseCapture:function(event){return true;}};$.ui.mouse.defaults={cancel:null,distance:1,delay:0};})(jQuery);(function($){$.extend($.ui,{datepicker:{version:"1.7.1"}});var PROP_NAME='datepicker';function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId='ui-datepicker-div';this._inlineClass='ui-datepicker-inline';this._appendClass='ui-datepicker-append';this._triggerClass='ui-datepicker-trigger';this._dialogClass='ui-datepicker-dialog';this._disableClass='ui-datepicker-disabled';this._unselectableClass='ui-datepicker-unselectable';this._currentClass='ui-datepicker-current-day';this._dayOverClass='ui-datepicker-days-cell-over';this.regional=[];this.regional['']={closeText:'Done',prevText:'Prev',nextText:'Next',currentText:'Today',monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],dateFormat:'mm/dd/yy',firstDay:0,isRTL:false};this._defaults={showOn:'focus',showAnim:'show',showOptions:{},defaultDate:null,appendText:'',buttonText:'...',buttonImage:'',buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:'-10:+10',showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:'+10',minDate:null,maxDate:null,duration:'normal',beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:'',altFormat:'',constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional['']);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>');} |
| 27 | +$.extend(Datepicker.prototype,{markerClassName:'hasDatepicker',log:function(){if(this.debug) |
| 28 | +console.log.apply('',arguments);},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this;},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute('date:'+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue);}catch(err){inlineSettings[attrName]=attrValue;}}} |
| 29 | +var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=='div'||nodeName=='span');if(!target.id) |
| 30 | +target.id='dp'+(++this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=='input'){this._connectDatepicker(target,inst);}else if(inline){this._inlineDatepicker(target,inst);}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,'\\\\$1');return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};},_connectDatepicker:function(target,inst){var input=$(target);inst.trigger=$([]);if(input.hasClass(this.markerClassName)) |
| 31 | +return;var appendText=this._get(inst,'appendText');var isRTL=this._get(inst,'isRTL');if(appendText) |
| 32 | +input[isRTL?'before':'after']('<span class="'+this._appendClass+'">'+appendText+'</span>');var showOn=this._get(inst,'showOn');if(showOn=='focus'||showOn=='both') |
| 33 | +input.focus(this._showDatepicker);if(showOn=='button'||showOn=='both'){var buttonText=this._get(inst,'buttonText');var buttonImage=this._get(inst,'buttonImage');inst.trigger=$(this._get(inst,'buttonImageOnly')?$('<img/>').addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==''?buttonText:$('<img/>').attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?'before':'after'](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target) |
| 34 | +$.datepicker._hideDatepicker();else |
| 35 | +$.datepicker._showDatepicker(target);return false;});} |
| 36 | +input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value;}).bind("getData.datepicker",function(event,key){return this._get(inst,key);});$.data(target,PROP_NAME,inst);},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)) |
| 37 | +return;divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value;}).bind("getData.datepicker",function(event,key){return this._get(inst,key);});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst);},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id='dp'+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$('body').append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst);} |
| 38 | +extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY];} |
| 39 | +this._dialogInput.css('left',this._pos[0]+'px').css('top',this._pos[1]+'px');inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI) |
| 40 | +$.blockUI(this.dpDiv);$.data(this._dialogInput[0],PROP_NAME,inst);return this;},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return;} |
| 41 | +var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=='input'){inst.trigger.remove();$target.siblings('.'+this._appendClass).remove().end().removeClass(this.markerClassName).unbind('focus',this._showDatepicker).unbind('keydown',this._doKeyDown).unbind('keypress',this._doKeyPress);}else if(nodeName=='div'||nodeName=='span') |
| 42 | +$target.removeClass(this.markerClassName).empty();},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return;} |
| 43 | +var nodeName=target.nodeName.toLowerCase();if(nodeName=='input'){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false;}).end().filter("img").css({opacity:'1.0',cursor:''});} |
| 44 | +else if(nodeName=='div'||nodeName=='span'){var inline=$target.children('.'+this._inlineClass);inline.children().removeClass('ui-state-disabled');} |
| 45 | +this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value);});},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return;} |
| 46 | +var nodeName=target.nodeName.toLowerCase();if(nodeName=='input'){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true;}).end().filter("img").css({opacity:'0.5',cursor:'default'});} |
| 47 | +else if(nodeName=='div'||nodeName=='span'){var inline=$target.children('.'+this._inlineClass);inline.children().addClass('ui-state-disabled');} |
| 48 | +this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value);});this._disabledInputs[this._disabledInputs.length]=target;},_isDisabledDatepicker:function(target){if(!target){return false;} |
| 49 | +for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target) |
| 50 | +return true;} |
| 51 | +return false;},_getInst:function(target){try{return $.data(target,PROP_NAME);} |
| 52 | +catch(err){throw'Missing instance data for this datepicker';}},_optionDatepicker:function(target,name,value){var settings=name||{};if(typeof name=='string'){settings={};settings[name]=value;} |
| 53 | +var inst=this._getInst(target);if(inst){if(this._curInst==inst){this._hideDatepicker(null);} |
| 54 | +extendRemove(inst.settings,settings);var date=new Date();extendRemove(inst,{rangeStart:null,endDay:null,endMonth:null,endYear:null,selectedDay:date.getDate(),selectedMonth:date.getMonth(),selectedYear:date.getFullYear(),currentDay:date.getDate(),currentMonth:date.getMonth(),currentYear:date.getFullYear(),drawMonth:date.getMonth(),drawYear:date.getFullYear()});this._updateDatepicker(inst);}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value);},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst);}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst);}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline) |
| 55 | +this._setDateFromField(inst);return(inst?this._getDate(inst):null);},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is('.ui-datepicker-rtl');inst._keyEvent=true;if($.datepicker._datepickerShowing) |
| 56 | +switch(event.keyCode){case 9:$.datepicker._hideDatepicker(null,'');break;case 13:var sel=$('td.'+$.datepicker._dayOverClass+', td.'+$.datepicker._currentClass,inst.dpDiv);if(sel[0]) |
| 57 | +$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0]);else |
| 58 | +$.datepicker._hideDatepicker(null,$.datepicker._get(inst,'duration'));return false;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,'duration'));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,'stepBigMonths'):-$.datepicker._get(inst,'stepMonths')),'M');break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,'stepBigMonths'):+$.datepicker._get(inst,'stepMonths')),'M');break;case 35:if(event.ctrlKey||event.metaKey)$.datepicker._clearDate(event.target);handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey)$.datepicker._gotoToday(event.target);handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey)$.datepicker._adjustDate(event.target,(isRTL?+1:-1),'D');handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey)$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,'stepBigMonths'):-$.datepicker._get(inst,'stepMonths')),'M');break;case 38:if(event.ctrlKey||event.metaKey)$.datepicker._adjustDate(event.target,-7,'D');handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey)$.datepicker._adjustDate(event.target,(isRTL?-1:+1),'D');handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey)$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,'stepBigMonths'):+$.datepicker._get(inst,'stepMonths')),'M');break;case 40:if(event.ctrlKey||event.metaKey)$.datepicker._adjustDate(event.target,+7,'D');handled=event.ctrlKey||event.metaKey;break;default:handled=false;} |
| 59 | +else if(event.keyCode==36&&event.ctrlKey) |
| 60 | +$.datepicker._showDatepicker(this);else{handled=false;} |
| 61 | +if(handled){event.preventDefault();event.stopPropagation();}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,'constrainInput')){var chars=$.datepicker._possibleChars($.datepicker._get(inst,'dateFormat'));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<' '||!chars||chars.indexOf(chr)>-1);}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!='input') |
| 62 | +input=$('input',input.parentNode)[0];if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input) |
| 63 | +return;var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,'beforeShow');extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,'');$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog) |
| 64 | +input.value='';if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight;} |
| 65 | +var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css('position')=='fixed';return!isFixed;});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop;} |
| 66 | +var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:'absolute',display:'block',top:'-1000px'});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?'static':(isFixed?'fixed':'absolute')),display:'none',left:offset.left+'px',top:offset.top+'px'});if(!inst.inline){var showAnim=$.datepicker._get(inst,'showAnim')||'show';var duration=$.datepicker._get(inst,'duration');var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7) |
| 67 | +$('iframe.ui-datepicker-cover').css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4});};if($.effects&&$.effects[showAnim]) |
| 68 | +inst.dpDiv.show(showAnim,$.datepicker._get(inst,'showOptions'),duration,postProcess);else |
| 69 | +inst.dpDiv[showAnim](duration,postProcess);if(duration=='') |
| 70 | +postProcess();if(inst.input[0].type!='hidden') |
| 71 | +inst.input[0].focus();$.datepicker._curInst=inst;}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find('iframe.ui-datepicker-cover').css({width:dims.width,height:dims.height}).end().find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a').bind('mouseout',function(){$(this).removeClass('ui-state-hover');if(this.className.indexOf('ui-datepicker-prev')!=-1)$(this).removeClass('ui-datepicker-prev-hover');if(this.className.indexOf('ui-datepicker-next')!=-1)$(this).removeClass('ui-datepicker-next-hover');}).bind('mouseover',function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');$(this).addClass('ui-state-hover');if(this.className.indexOf('ui-datepicker-prev')!=-1)$(this).addClass('ui-datepicker-prev-hover');if(this.className.indexOf('ui-datepicker-next')!=-1)$(this).addClass('ui-datepicker-next-hover');}}).end().find('.'+this._dayOverClass+' a').trigger('mouseover').end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass('ui-datepicker-multi-'+cols).css('width',(width*cols)+'em');}else{inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');} |
| 72 | +inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?'add':'remove')+'Class']('ui-datepicker-multi');inst.dpDiv[(this._get(inst,'isRTL')?'add':'remove')+'Class']('ui-datepicker-rtl');if(inst.input&&inst.input[0].type!='hidden'&&inst==$.datepicker._curInst) |
| 73 | +$(inst.input[0]).focus();},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,'isRTL')?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset;},_findPos:function(obj){while(obj&&(obj.type=='hidden'||obj.nodeType!=1)){obj=obj.nextSibling;} |
| 74 | +var position=$(obj).offset();return[position.left,position.top];},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))) |
| 75 | +return;if(inst.stayOpen) |
| 76 | +this._selectDate('#'+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,'duration'));var showAnim=this._get(inst,'showAnim');var postProcess=function(){$.datepicker._tidyDialog(inst);};if(duration!=''&&$.effects&&$.effects[showAnim]) |
| 77 | +inst.dpDiv.hide(showAnim,$.datepicker._get(inst,'showOptions'),duration,postProcess);else |
| 78 | +inst.dpDiv[(duration==''?'hide':(showAnim=='slideDown'?'slideUp':(showAnim=='fadeIn'?'fadeOut':'hide')))](duration,postProcess);if(duration=='') |
| 79 | +this._tidyDialog(inst);var onClose=this._get(inst,'onClose');if(onClose) |
| 80 | +onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():''),inst]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:'absolute',left:'0',top:'-100px'});if($.blockUI){$.unblockUI();$('body').append(this.dpDiv);}} |
| 81 | +this._inDialog=false;} |
| 82 | +this._curInst=null;},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');},_checkExternalClick:function(event){if(!$.datepicker._curInst) |
| 83 | +return;var $target=$(event.target);if(($target.parents('#'+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)) |
| 84 | +$.datepicker._hideDatepicker(null,'');},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return;} |
| 85 | +this._adjustInstDate(inst,offset+ |
| 86 | +(period=='M'?this._get(inst,'showCurrentAtPos'):0),period);this._updateDatepicker(inst);},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,'gotoCurrent')&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear;} |
| 87 | +else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();} |
| 88 | +this._notifyChange(inst);this._adjustDate(target);},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst['selected'+(period=='M'?'Month':'Year')]=inst['draw'+(period=='M'?'Month':'Year')]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target);},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie) |
| 89 | +inst.input[0].focus();inst._selectingMonthYear=!inst._selectingMonthYear;},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return;} |
| 90 | +var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$('a',td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null;} |
| 91 | +this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst);}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,'');},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input) |
| 92 | +inst.input.val(dateStr);this._updateAlternate(inst);var onSelect=this._get(inst,'onSelect');if(onSelect) |
| 93 | +onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst]);else if(inst.input) |
| 94 | +inst.input.trigger('change');if(inst.inline) |
| 95 | +this._updateDatepicker(inst);else if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,'duration'));this._lastInput=inst.input[0];if(typeof(inst.input[0])!='object') |
| 96 | +inst.input[0].focus();this._lastInput=null;}},_updateAlternate:function(inst){var altField=this._get(inst,'altField');if(altField){var altFormat=this._get(inst,'altFormat')||this._get(inst,'dateFormat');var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr);});}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),''];},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate);}else if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1;}} |
| 97 | +return Math.floor(((checkDate-firstMon)/86400000)/7)+1;},parseDate:function(format,value,settings){if(format==null||value==null) |
| 98 | +throw'Invalid arguments';value=(typeof value=='object'?value.toString():value+'');if(value=='') |
| 99 | +return null;var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches) |
| 100 | +iFormat++;return matches;};var getNumber=function(match){lookAhead(match);var origSize=(match=='@'?14:(match=='y'?4:(match=='o'?3:2)));var size=origSize;var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>='0'&&value.charAt(iValue)<='9'){num=num*10+parseInt(value.charAt(iValue++),10);size--;} |
| 101 | +if(size==origSize) |
| 102 | +throw'Missing number at position '+iValue;return num;};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++) |
| 103 | +size=Math.max(size,names[j].length);var name='';var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++) |
| 104 | +if(name==names[i]) |
| 105 | +return i+1;size--;} |
| 106 | +throw'Unknown name at position '+iInit;};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)) |
| 107 | +throw'Unexpected literal at position '+iValue;iValue++;};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal) |
| 108 | +if(format.charAt(iFormat)=="'"&&!lookAhead("'")) |
| 109 | +literal=false;else |
| 110 | +checkLiteral();else |
| 111 | +switch(format.charAt(iFormat)){case'd':day=getNumber('d');break;case'D':getName('D',dayNamesShort,dayNames);break;case'o':doy=getNumber('o');break;case'm':month=getNumber('m');break;case'M':month=getName('M',monthNamesShort,monthNames);break;case'y':year=getNumber('y');break;case'@':var date=new Date(getNumber('@'));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")) |
| 112 | +checkLiteral();else |
| 113 | +literal=true;break;default:checkLiteral();}} |
| 114 | +if(year==-1) |
| 115 | +year=new Date().getFullYear();else if(year<100) |
| 116 | +year+=new Date().getFullYear()-new Date().getFullYear()%100+ |
| 117 | +(year<=shortYearCutoff?0:-100);if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim) |
| 118 | +break;month++;day-=dim;}while(true);} |
| 119 | +var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day) |
| 120 | +throw'Invalid date';return date;},ATOM:'yy-mm-dd',COOKIE:'D, dd M yy',ISO_8601:'yy-mm-dd',RFC_822:'D, d M y',RFC_850:'DD, dd-M-y',RFC_1036:'D, d M y',RFC_1123:'D, d M yy',RFC_2822:'D, d M yy',RSS:'D, d M y',TIMESTAMP:'@',W3C:'yy-mm-dd',formatDate:function(format,date,settings){if(!date) |
| 121 | +return'';var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches) |
| 122 | +iFormat++;return matches;};var formatNumber=function(match,value,len){var num=''+value;if(lookAhead(match)) |
| 123 | +while(num.length<len) |
| 124 | +num='0'+num;return num;};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value]);};var output='';var literal=false;if(date) |
| 125 | +for(var iFormat=0;iFormat<format.length;iFormat++){if(literal) |
| 126 | +if(format.charAt(iFormat)=="'"&&!lookAhead("'")) |
| 127 | +literal=false;else |
| 128 | +output+=format.charAt(iFormat);else |
| 129 | +switch(format.charAt(iFormat)){case'd':output+=formatNumber('d',date.getDate(),2);break;case'D':output+=formatName('D',date.getDay(),dayNamesShort,dayNames);break;case'o':var doy=date.getDate();for(var m=date.getMonth()-1;m>=0;m--) |
| 130 | +doy+=this._getDaysInMonth(date.getFullYear(),m);output+=formatNumber('o',doy,3);break;case'm':output+=formatNumber('m',date.getMonth()+1,2);break;case'M':output+=formatName('M',date.getMonth(),monthNamesShort,monthNames);break;case'y':output+=(lookAhead('y')?date.getFullYear():(date.getYear()%100<10?'0':'')+date.getYear()%100);break;case'@':output+=date.getTime();break;case"'":if(lookAhead("'")) |
| 131 | +output+="'";else |
| 132 | +literal=true;break;default:output+=format.charAt(iFormat);}} |
| 133 | +return output;},_possibleChars:function(format){var chars='';var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++) |
| 134 | +if(literal) |
| 135 | +if(format.charAt(iFormat)=="'"&&!lookAhead("'")) |
| 136 | +literal=false;else |
| 137 | +chars+=format.charAt(iFormat);else |
| 138 | +switch(format.charAt(iFormat)){case'd':case'm':case'y':case'@':chars+='0123456789';break;case'D':case'M':return null;case"'":if(lookAhead("'")) |
| 139 | +chars+="'";else |
| 140 | +literal=true;break;default:chars+=format.charAt(iFormat);} |
| 141 | +return chars;},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name];},_setDateFromField:function(inst){var dateFormat=this._get(inst,'dateFormat');var dates=inst.input?inst.input.val():null;inst.endDay=inst.endMonth=inst.endYear=null;var date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate;}catch(event){this.log(event);date=defaultDate;} |
| 142 | +inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst);},_getDefaultDate:function(inst){var date=this._determineDate(this._get(inst,'defaultDate'),new Date());var minDate=this._getMinMaxDate(inst,'min',true);var maxDate=this._getMinMaxDate(inst,'max');date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date;},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date;};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||'d'){case'd':case'D':day+=parseInt(matches[1],10);break;case'w':case'W':day+=parseInt(matches[1],10)*7;break;case'm':case'M':month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case'y':case'Y':year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;} |
| 143 | +matches=pattern.exec(offset);} |
| 144 | +return new Date(year,month,day);};date=(date==null?defaultDate:(typeof date=='string'?offsetString(date,this._getDaysInMonth):(typeof date=='number'?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=='Invalid Date'?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0);} |
| 145 | +return this._daylightSavingAdjust(date);},_daylightSavingAdjust:function(date){if(!date)return null;date.setHours(date.getHours()>12?date.getHours()+2:0);return date;},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear) |
| 146 | +this._notifyChange(inst);this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?'':this._formatDate(inst));}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=='')?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate;},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,'isRTL');var showButtonPanel=this._get(inst,'showButtonPanel');var hideIfNoPrevNext=this._get(inst,'hideIfNoPrevNext');var navigationAsDateFormat=this._get(inst,'navigationAsDateFormat');var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,'showCurrentAtPos');var stepMonths=this._get(inst,'stepMonths');var stepBigMonths=this._get(inst,'stepBigMonths');var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,'min',true);var maxDate=this._getMinMaxDate(inst,'max');var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--;} |
| 147 | +if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--;}}} |
| 148 | +inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,'prevText');prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+'\', -'+stepMonths+', \'M\');"'+' title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?'e':'w')+'">'+prevText+'</span></a>':(hideIfNoPrevNext?'':'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?'e':'w')+'">'+prevText+'</span></a>'));var nextText=this._get(inst,'nextText');nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+'\', +'+stepMonths+', \'M\');"'+' title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?'w':'e')+'">'+nextText+'</span></a>':(hideIfNoPrevNext?'':'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?'w':'e')+'">'+nextText+'</span></a>'));var currentText=this._get(inst,'currentText');var gotoDate=(this._get(inst,'gotoCurrent')&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'+this._get(inst,'closeText')+'</button>':'');var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:'')+ |
| 149 | +(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'+inst.id+'\');"'+'>'+currentText+'</button>':'')+(isRTL?'':controls)+'</div>':'';var firstDay=parseInt(this._get(inst,'firstDay'),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,'dayNames');var dayNamesShort=this._get(inst,'dayNamesShort');var dayNamesMin=this._get(inst,'dayNamesMin');var monthNames=this._get(inst,'monthNames');var monthNamesShort=this._get(inst,'monthNamesShort');var beforeShowDay=this._get(inst,'beforeShowDay');var showOtherMonths=this._get(inst,'showOtherMonths');var calculateWeek=this._get(inst,'calculateWeek')||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html='';for(var row=0;row<numMonths[0];row++){var group='';for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=' ui-corner-all';var calender='';if(isMultiMonth){calender+='<div class="ui-datepicker-group ui-datepicker-group-';switch(col){case 0:calender+='first';cornerClass=' ui-corner-'+(isRTL?'right':'left');break;case numMonths[1]-1:calender+='last';cornerClass=' ui-corner-'+(isRTL?'left':'right');break;default:calender+='middle';cornerClass='';break;} |
| 150 | +calender+='">';} |
| 151 | +calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+ |
| 152 | +(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):'')+ |
| 153 | +(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):'')+ |
| 154 | +this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead>'+'<tr>';var thead='';for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+='<th'+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':'')+'>'+'<span title="'+dayNames[day]+'">'+dayNamesMin[day]+'</span></th>';} |
| 155 | +calender+=thead+'</tr></thead><tbody>';var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth) |
| 156 | +inst.selectedDay=Math.min(inst.selectedDay,daysInMonth);var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+='<tr>';var tbody='';for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,'']);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+ |
| 157 | +((dow+firstDay+6)%7>=5?' ui-datepicker-week-end':'')+ |
| 158 | +(otherMonth?' ui-datepicker-other-month':'')+ |
| 159 | +((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?' '+this._dayOverClass:'')+ |
| 160 | +(unselectable?' '+this._unselectableClass+' ui-state-disabled':'')+ |
| 161 | +(otherMonth&&!showOtherMonths?'':' '+daySettings[1]+ |
| 162 | +(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?' '+this._currentClass:'')+ |
| 163 | +(printDate.getTime()==today.getTime()?' ui-datepicker-today':''))+'"'+ |
| 164 | +((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':'')+ |
| 165 | +(unselectable?'':' onclick="DP_jQuery.datepicker._selectDay(\'#'+ |
| 166 | +inst.id+'\','+drawMonth+','+drawYear+', this);return false;"')+'>'+ |
| 167 | +(otherMonth?(showOtherMonths?printDate.getDate():' '):(unselectable?'<span class="ui-state-default">'+printDate.getDate()+'</span>':'<a class="ui-state-default'+ |
| 168 | +(printDate.getTime()==today.getTime()?' ui-state-highlight':'')+ |
| 169 | +(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?' ui-state-active':'')+'" href="#">'+printDate.getDate()+'</a>'))+'</td>';printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate);} |
| 170 | +calender+=tbody+'</tr>';} |
| 171 | +drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++;} |
| 172 | +calender+='</tbody></table>'+(isMultiMonth?'</div>'+ |
| 173 | +((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':''):'');group+=calender;} |
| 174 | +html+=group;} |
| 175 | +html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':'');inst._keyEvent=false;return html;},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var changeMonth=this._get(inst,'changeMonth');var changeYear=this._get(inst,'changeYear');var showMonthAfterYear=this._get(inst,'showMonthAfterYear');var html='<div class="ui-datepicker-title">';var monthHtml='';if(secondary||!changeMonth) |
| 176 | +monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+'</span> ';else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" '+'onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+'\', this, \'M\');" '+'onclick="DP_jQuery.datepicker._clickMonthYear(\'#'+inst.id+'\');"'+'>';for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())) |
| 177 | +monthHtml+='<option value="'+month+'"'+ |
| 178 | +(month==drawMonth?' selected="selected"':'')+'>'+monthNamesShort[month]+'</option>';} |
| 179 | +monthHtml+='</select>';} |
| 180 | +if(!showMonthAfterYear) |
| 181 | +html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?' ':'');if(secondary||!changeYear) |
| 182 | +html+='<span class="ui-datepicker-year">'+drawYear+'</span>';else{var years=this._get(inst,'yearRange').split(':');var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10;}else if(years[0].charAt(0)=='+'||years[0].charAt(0)=='-'){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10);}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10);} |
| 183 | +year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" '+'onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+'\', this, \'Y\');" '+'onclick="DP_jQuery.datepicker._clickMonthYear(\'#'+inst.id+'\');"'+'>';for(;year<=endYear;year++){html+='<option value="'+year+'"'+ |
| 184 | +(year==drawYear?' selected="selected"':'')+'>'+year+'</option>';} |
| 185 | +html+='</select>';} |
| 186 | +if(showMonthAfterYear) |
| 187 | +html+=(secondary||changeMonth||changeYear?' ':'')+monthHtml;html+='</div>';return html;},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=='Y'?offset:0);var month=inst.drawMonth+(period=='M'?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+ |
| 188 | +(period=='D'?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,'min',true);var maxDate=this._getMinMaxDate(inst,'max');date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=='M'||period=='Y') |
| 189 | +this._notifyChange(inst);},_notifyChange:function(inst){var onChange=this._get(inst,'onChangeMonthYear');if(onChange) |
| 190 | +onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst]);},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,'numberOfMonths');return(numMonths==null?[1,1]:(typeof numMonths=='number'?[1,numMonths]:numMonths));},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+'Date'),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date));},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate();},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay();},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0) |
| 191 | +date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()));return this._isInRange(inst,date);},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate(inst,'min');var maxDate=this._getMinMaxDate(inst,'max');return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate));},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,'shortYearCutoff');shortYearCutoff=(typeof shortYearCutoff!='string'?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,'dayNamesShort'),dayNames:this._get(inst,'dayNames'),monthNamesShort:this._get(inst,'monthNamesShort'),monthNames:this._get(inst,'monthNames')};},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear;} |
| 192 | +var date=(day?(typeof day=='object'?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,'dateFormat'),date,this._getFormatConfig(inst));}});function extendRemove(target,props){$.extend(target,props);for(var name in props) |
| 193 | +if(props[name]==null||props[name]==undefined) |
| 194 | +target[name]=props[name];return target;};function isArray(a){return(a&&(($.browser.safari&&typeof a=='object'&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))));};$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find('body').append($.datepicker.dpDiv);$.datepicker.initialized=true;} |
| 195 | +var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=='string'&&(options=='isDisabled'||options=='getDate')) |
| 196 | +return $.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this[0]].concat(otherArgs));return this.each(function(){typeof options=='string'?$.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options);});};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.1";window.DP_jQuery=$;})(jQuery);(function($){var setDataSwitch={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"},uiDialogClasses='ui-dialog '+'ui-widget '+'ui-widget-content '+'ui-corner-all ';$.widget("ui.dialog",{_init:function(){this.originalTitle=this.element.attr('title');var self=this,options=this.options,title=options.title||this.originalTitle||' ',titleId=$.ui.dialog.getTitleId(this.element),uiDialog=(this.uiDialog=$('<div/>')).appendTo(document.body).hide().addClass(uiDialogClasses+options.dialogClass).css({position:'absolute',overflow:'hidden',zIndex:options.zIndex}).attr('tabIndex',-1).css('outline',0).keydown(function(event){(options.closeOnEscape&&event.keyCode&&event.keyCode==$.ui.keyCode.ESCAPE&&self.close(event));}).attr({role:'dialog','aria-labelledby':titleId}).mousedown(function(event){self.moveToTop(false,event);}),uiDialogContent=this.element.show().removeAttr('title').addClass('ui-dialog-content '+'ui-widget-content').appendTo(uiDialog),uiDialogTitlebar=(this.uiDialogTitlebar=$('<div></div>')).addClass('ui-dialog-titlebar '+'ui-widget-header '+'ui-corner-all '+'ui-helper-clearfix').prependTo(uiDialog),uiDialogTitlebarClose=$('<a href="#"/>').addClass('ui-dialog-titlebar-close '+'ui-corner-all').attr('role','button').hover(function(){uiDialogTitlebarClose.addClass('ui-state-hover');},function(){uiDialogTitlebarClose.removeClass('ui-state-hover');}).focus(function(){uiDialogTitlebarClose.addClass('ui-state-focus');}).blur(function(){uiDialogTitlebarClose.removeClass('ui-state-focus');}).mousedown(function(ev){ev.stopPropagation();}).click(function(event){self.close(event);return false;}).appendTo(uiDialogTitlebar),uiDialogTitlebarCloseText=(this.uiDialogTitlebarCloseText=$('<span/>')).addClass('ui-icon '+'ui-icon-closethick').text(options.closeText).appendTo(uiDialogTitlebarClose),uiDialogTitle=$('<span/>').addClass('ui-dialog-title').attr('id',titleId).html(title).prependTo(uiDialogTitlebar);uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();(options.draggable&&$.fn.draggable&&this._makeDraggable());(options.resizable&&$.fn.resizable&&this._makeResizable());this._createButtons(options.buttons);this._isOpen=false;(options.bgiframe&&$.fn.bgiframe&&uiDialog.bgiframe());(options.autoOpen&&this.open());},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind('.dialog').removeData('dialog').removeClass('ui-dialog-content ui-widget-content').hide().appendTo('body');this.uiDialog.remove();(this.originalTitle&&this.element.attr('title',this.originalTitle));},close:function(event){var self=this;if(false===self._trigger('beforeclose',event)){return;} |
| 197 | +(self.overlay&&self.overlay.destroy());self.uiDialog.unbind('keypress.ui-dialog');(self.options.hide?self.uiDialog.hide(self.options.hide,function(){self._trigger('close',event);}):self.uiDialog.hide()&&self._trigger('close',event));$.ui.dialog.overlay.resize();self._isOpen=false;},isOpen:function(){return this._isOpen;},moveToTop:function(force,event){if((this.options.modal&&!force)||(!this.options.stack&&!this.options.modal)){return this._trigger('focus',event);} |
| 198 | +if(this.options.zIndex>$.ui.dialog.maxZ){$.ui.dialog.maxZ=this.options.zIndex;} |
| 199 | +(this.overlay&&this.overlay.$el.css('z-index',$.ui.dialog.overlay.maxZ=++$.ui.dialog.maxZ));var saveScroll={scrollTop:this.element.attr('scrollTop'),scrollLeft:this.element.attr('scrollLeft')};this.uiDialog.css('z-index',++$.ui.dialog.maxZ);this.element.attr(saveScroll);this._trigger('focus',event);},open:function(){if(this._isOpen){return;} |
| 200 | +var options=this.options,uiDialog=this.uiDialog;this.overlay=options.modal?new $.ui.dialog.overlay(this):null;(uiDialog.next().length&&uiDialog.appendTo('body'));this._size();this._position(options.position);uiDialog.show(options.show);this.moveToTop(true);(options.modal&&uiDialog.bind('keypress.ui-dialog',function(event){if(event.keyCode!=$.ui.keyCode.TAB){return;} |
| 201 | +var tabbables=$(':tabbable',this),first=tabbables.filter(':first')[0],last=tabbables.filter(':last')[0];if(event.target==last&&!event.shiftKey){setTimeout(function(){first.focus();},1);}else if(event.target==first&&event.shiftKey){setTimeout(function(){last.focus();},1);}}));$([]).add(uiDialog.find('.ui-dialog-content :tabbable:first')).add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first')).add(uiDialog).filter(':first').focus();this._trigger('open');this._isOpen=true;},_createButtons:function(buttons){var self=this,hasButtons=false,uiDialogButtonPane=$('<div></div>').addClass('ui-dialog-buttonpane '+'ui-widget-content '+'ui-helper-clearfix');this.uiDialog.find('.ui-dialog-buttonpane').remove();(typeof buttons=='object'&&buttons!==null&&$.each(buttons,function(){return!(hasButtons=true);}));if(hasButtons){$.each(buttons,function(name,fn){$('<button type="button"></button>').addClass('ui-state-default '+'ui-corner-all').text(name).click(function(){fn.apply(self.element[0],arguments);}).hover(function(){$(this).addClass('ui-state-hover');},function(){$(this).removeClass('ui-state-hover');}).focus(function(){$(this).addClass('ui-state-focus');}).blur(function(){$(this).removeClass('ui-state-focus');}).appendTo(uiDialogButtonPane);});uiDialogButtonPane.appendTo(this.uiDialog);}},_makeDraggable:function(){var self=this,options=this.options,heightBeforeDrag;this.uiDialog.draggable({cancel:'.ui-dialog-content',handle:'.ui-dialog-titlebar',containment:'document',start:function(){heightBeforeDrag=options.height;$(this).height($(this).height()).addClass("ui-dialog-dragging");(options.dragStart&&options.dragStart.apply(self.element[0],arguments));},drag:function(){(options.drag&&options.drag.apply(self.element[0],arguments));},stop:function(){$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);(options.dragStop&&options.dragStop.apply(self.element[0],arguments));$.ui.dialog.overlay.resize();}});},_makeResizable:function(handles){handles=(handles===undefined?this.options.resizable:handles);var self=this,options=this.options,resizeHandles=typeof handles=='string'?handles:'n,e,s,w,se,sw,ne,nw';this.uiDialog.resizable({cancel:'.ui-dialog-content',alsoResize:this.element,maxWidth:options.maxWidth,maxHeight:options.maxHeight,minWidth:options.minWidth,minHeight:options.minHeight,start:function(){$(this).addClass("ui-dialog-resizing");(options.resizeStart&&options.resizeStart.apply(self.element[0],arguments));},resize:function(){(options.resize&&options.resize.apply(self.element[0],arguments));},handles:resizeHandles,stop:function(){$(this).removeClass("ui-dialog-resizing");options.height=$(this).height();options.width=$(this).width();(options.resizeStop&&options.resizeStop.apply(self.element[0],arguments));$.ui.dialog.overlay.resize();}}).find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');},_position:function(pos){var wnd=$(window),doc=$(document),pTop=doc.scrollTop(),pLeft=doc.scrollLeft(),minTop=pTop;if($.inArray(pos,['center','top','right','bottom','left'])>=0){pos=[pos=='right'||pos=='left'?pos:'center',pos=='top'||pos=='bottom'?pos:'middle'];} |
| 202 | +if(pos.constructor!=Array){pos=['center','middle'];} |
| 203 | +if(pos[0].constructor==Number){pLeft+=pos[0];}else{switch(pos[0]){case'left':pLeft+=0;break;case'right':pLeft+=wnd.width()-this.uiDialog.outerWidth();break;default:case'center':pLeft+=(wnd.width()-this.uiDialog.outerWidth())/2;}} |
| 204 | +if(pos[1].constructor==Number){pTop+=pos[1];}else{switch(pos[1]){case'top':pTop+=0;break;case'bottom':pTop+=wnd.height()-this.uiDialog.outerHeight();break;default:case'middle':pTop+=(wnd.height()-this.uiDialog.outerHeight())/2;}} |
| 205 | +pTop=Math.max(pTop,minTop);this.uiDialog.css({top:pTop,left:pLeft});},_setData:function(key,value){(setDataSwitch[key]&&this.uiDialog.data(setDataSwitch[key],value));switch(key){case"buttons":this._createButtons(value);break;case"closeText":this.uiDialogTitlebarCloseText.text(value);break;case"dialogClass":this.uiDialog.removeClass(this.options.dialogClass).addClass(uiDialogClasses+value);break;case"draggable":(value?this._makeDraggable():this.uiDialog.draggable('destroy'));break;case"height":this.uiDialog.height(value);break;case"position":this._position(value);break;case"resizable":var uiDialog=this.uiDialog,isResizable=this.uiDialog.is(':data(resizable)');(isResizable&&!value&&uiDialog.resizable('destroy'));(isResizable&&typeof value=='string'&&uiDialog.resizable('option','handles',value));(isResizable||this._makeResizable(value));break;case"title":$(".ui-dialog-title",this.uiDialogTitlebar).html(value||' ');break;case"width":this.uiDialog.width(value);break;} |
| 206 | +$.widget.prototype._setData.apply(this,arguments);},_size:function(){var options=this.options;this.element.css({height:0,minHeight:0,width:'auto'});var nonContentHeight=this.uiDialog.css({height:'auto',width:options.width}).height();this.element.css({minHeight:Math.max(options.minHeight-nonContentHeight,0),height:options.height=='auto'?'auto':Math.max(options.height-nonContentHeight,0)});}});$.extend($.ui.dialog,{version:"1.7.1",defaults:{autoOpen:true,bgiframe:false,buttons:{},closeOnEscape:true,closeText:'close',dialogClass:'',draggable:true,hide:null,height:'auto',maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:'center',resizable:true,show:null,stack:true,title:'',width:300,zIndex:1000},getter:'isOpen',uuid:0,maxZ:0,getTitleId:function($el){return'ui-dialog-title-'+($el.attr('id')||++this.uuid);},overlay:function(dialog){this.$el=$.ui.dialog.overlay.create(dialog);}});$.extend($.ui.dialog.overlay,{instances:[],maxZ:0,events:$.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),function(event){return event+'.dialog-overlay';}).join(' '),create:function(dialog){if(this.instances.length===0){setTimeout(function(){$(document).bind($.ui.dialog.overlay.events,function(event){var dialogZ=$(event.target).parents('.ui-dialog').css('zIndex')||0;return(dialogZ>$.ui.dialog.overlay.maxZ);});},1);$(document).bind('keydown.dialog-overlay',function(event){(dialog.options.closeOnEscape&&event.keyCode&&event.keyCode==$.ui.keyCode.ESCAPE&&dialog.close(event));});$(window).bind('resize.dialog-overlay',$.ui.dialog.overlay.resize);} |
| 207 | +var $el=$('<div></div>').appendTo(document.body).addClass('ui-widget-overlay').css({width:this.width(),height:this.height()});(dialog.options.bgiframe&&$.fn.bgiframe&&$el.bgiframe());this.instances.push($el);return $el;},destroy:function($el){this.instances.splice($.inArray(this.instances,$el),1);if(this.instances.length===0){$([document,window]).unbind('.dialog-overlay');} |
| 208 | +$el.remove();},height:function(){if($.browser.msie&&$.browser.version<7){var scrollHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var offsetHeight=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(scrollHeight<offsetHeight){return $(window).height()+'px';}else{return scrollHeight+'px';}}else{return $(document).height()+'px';}},width:function(){if($.browser.msie&&$.browser.version<7){var scrollWidth=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);var offsetWidth=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(scrollWidth<offsetWidth){return $(window).width()+'px';}else{return scrollWidth+'px';}}else{return $(document).width()+'px';}},resize:function(){var $overlays=$([]);$.each($.ui.dialog.overlay.instances,function(){$overlays=$overlays.add(this);});$overlays.css({width:0,height:0}).css({width:$.ui.dialog.overlay.width(),height:$.ui.dialog.overlay.height()});}});$.extend($.ui.dialog.overlay.prototype,{destroy:function(){$.ui.dialog.overlay.destroy(this.$el);}});})(jQuery);(function($){$.widget("ui.draggable",$.extend({},$.ui.mouse,{_init:function(){if(this.options.helper=='original'&&!(/^(?:r|a|f)/).test(this.element.css("position"))) |
| 209 | +this.element[0].style.position='relative';(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit();},destroy:function(){if(!this.element.data('draggable'))return;this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable" |
| 210 | ++" ui-draggable-dragging" |
| 211 | ++" ui-draggable-disabled");this._mouseDestroy();},_mouseCapture:function(event){var o=this.options;if(this.helper||o.disabled||$(event.target).is('.ui-resizable-handle')) |
| 212 | +return false;this.handle=this._getHandle(event);if(!this.handle) |
| 213 | +return false;return true;},_mouseStart:function(event){var o=this.options;this.helper=this._createHelper(event);this._cacheHelperProportions();if($.ui.ddmanager) |
| 214 | +$.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};$.extend(this.offset,{click:{left:event.pageX-this.offset.left,top:event.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(event);this.originalPageX=event.pageX;this.originalPageY=event.pageY;if(o.cursorAt) |
| 215 | +this._adjustOffsetFromHelper(o.cursorAt);if(o.containment) |
| 216 | +this._setContainment();this._trigger("start",event);this._cacheHelperProportions();if($.ui.ddmanager&&!o.dropBehaviour) |
| 217 | +$.ui.ddmanager.prepareOffsets(this,event);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(event,true);return true;},_mouseDrag:function(event,noPropagation){this.position=this._generatePosition(event);this.positionAbs=this._convertPositionTo("absolute");if(!noPropagation){var ui=this._uiHash();this._trigger('drag',event,ui);this.position=ui.position;} |
| 218 | +if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+'px';if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+'px';if($.ui.ddmanager)$.ui.ddmanager.drag(this,event);return false;},_mouseStop:function(event){var dropped=false;if($.ui.ddmanager&&!this.options.dropBehaviour) |
| 219 | +dropped=$.ui.ddmanager.drop(this,event);if(this.dropped){dropped=this.dropped;this.dropped=false;} |
| 220 | +if((this.options.revert=="invalid"&&!dropped)||(this.options.revert=="valid"&&dropped)||this.options.revert===true||($.isFunction(this.options.revert)&&this.options.revert.call(this.element,dropped))){var self=this;$(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){self._trigger("stop",event);self._clear();});}else{this._trigger("stop",event);this._clear();} |
| 221 | +return false;},_getHandle:function(event){var handle=!this.options.handle||!$(this.options.handle,this.element).length?true:false;$(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==event.target)handle=true;});return handle;},_createHelper:function(event){var o=this.options;var helper=$.isFunction(o.helper)?$(o.helper.apply(this.element[0],[event])):(o.helper=='clone'?this.element.clone():this.element);if(!helper.parents('body').length) |
| 222 | +helper.appendTo((o.appendTo=='parent'?this.element[0].parentNode:o.appendTo));if(helper[0]!=this.element[0]&&!(/(fixed|absolute)/).test(helper.css("position"))) |
| 223 | +helper.css("position","absolute");return helper;},_adjustOffsetFromHelper:function(obj){if(obj.left!=undefined)this.offset.click.left=obj.left+this.margins.left;if(obj.right!=undefined)this.offset.click.left=this.helperProportions.width-obj.right+this.margins.left;if(obj.top!=undefined)this.offset.click.top=obj.top+this.margins.top;if(obj.bottom!=undefined)this.offset.click.top=this.helperProportions.height-obj.bottom+this.margins.top;},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var po=this.offsetParent.offset();if(this.cssPosition=='absolute'&&this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0])){po.left+=this.scrollParent.scrollLeft();po.top+=this.scrollParent.scrollTop();} |
| 224 | +if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=='html'&&$.browser.msie)) |
| 225 | +po={top:0,left:0};return{top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)};},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var p=this.element.position();return{top:p.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:p.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()};}else{return{top:0,left:0};}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)};},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()};},_setContainment:function(){var o=this.options;if(o.containment=='parent')o.containment=this.helper[0].parentNode;if(o.containment=='document'||o.containment=='window')this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,$(o.containment=='document'?document:window).width()-this.helperProportions.width-this.margins.left,($(o.containment=='document'?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!(/^(document|window|parent)$/).test(o.containment)&&o.containment.constructor!=Array){var ce=$(o.containment)[0];if(!ce)return;var co=$(o.containment).offset();var over=($(ce).css("overflow")!='hidden');this.containment=[co.left+(parseInt($(ce).css("borderLeftWidth"),10)||0)+(parseInt($(ce).css("paddingLeft"),10)||0)-this.margins.left,co.top+(parseInt($(ce).css("borderTopWidth"),10)||0)+(parseInt($(ce).css("paddingTop"),10)||0)-this.margins.top,co.left+(over?Math.max(ce.scrollWidth,ce.offsetWidth):ce.offsetWidth)-(parseInt($(ce).css("borderLeftWidth"),10)||0)-(parseInt($(ce).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,co.top+(over?Math.max(ce.scrollHeight,ce.offsetHeight):ce.offsetHeight)-(parseInt($(ce).css("borderTopWidth"),10)||0)-(parseInt($(ce).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top];}else if(o.containment.constructor==Array){this.containment=o.containment;}},_convertPositionTo:function(d,pos){if(!pos)pos=this.position;var mod=d=="absolute"?1:-1;var o=this.options,scroll=this.cssPosition=='absolute'&&!(this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName);return{top:(pos.top |
| 226 | ++this.offset.relative.top*mod |
| 227 | ++this.offset.parent.top*mod |
| 228 | +-($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollTop():(scrollIsRootNode?0:scroll.scrollTop()))*mod)),left:(pos.left |
| 229 | ++this.offset.relative.left*mod |
| 230 | ++this.offset.parent.left*mod |
| 231 | +-($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())*mod))};},_generatePosition:function(event){var o=this.options,scroll=this.cssPosition=='absolute'&&!(this.scrollParent[0]!=document&&$.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,scrollIsRootNode=(/(html|body)/i).test(scroll[0].tagName);if(this.cssPosition=='relative'&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset();} |
| 232 | +var pageX=event.pageX;var pageY=event.pageY;if(this.originalPosition){if(this.containment){if(event.pageX-this.offset.click.left<this.containment[0])pageX=this.containment[0]+this.offset.click.left;if(event.pageY-this.offset.click.top<this.containment[1])pageY=this.containment[1]+this.offset.click.top;if(event.pageX-this.offset.click.left>this.containment[2])pageX=this.containment[2]+this.offset.click.left;if(event.pageY-this.offset.click.top>this.containment[3])pageY=this.containment[3]+this.offset.click.top;} |
| 233 | +if(o.grid){var top=this.originalPageY+Math.round((pageY-this.originalPageY)/o.grid[1])*o.grid[1];pageY=this.containment?(!(top-this.offset.click.top<this.containment[1]||top-this.offset.click.top>this.containment[3])?top:(!(top-this.offset.click.top<this.containment[1])?top-o.grid[1]:top+o.grid[1])):top;var left=this.originalPageX+Math.round((pageX-this.originalPageX)/o.grid[0])*o.grid[0];pageX=this.containment?(!(left-this.offset.click.left<this.containment[0]||left-this.offset.click.left>this.containment[2])?left:(!(left-this.offset.click.left<this.containment[0])?left-o.grid[0]:left+o.grid[0])):left;}} |
| 234 | +return{top:(pageY |
| 235 | +-this.offset.click.top |
| 236 | +-this.offset.relative.top |
| 237 | +-this.offset.parent.top |
| 238 | ++($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollTop():(scrollIsRootNode?0:scroll.scrollTop())))),left:(pageX |
| 239 | +-this.offset.click.left |
| 240 | +-this.offset.relative.left |
| 241 | +-this.offset.parent.left |
| 242 | ++($.browser.safari&&this.cssPosition=='fixed'?0:(this.cssPosition=='fixed'?-this.scrollParent.scrollLeft():scrollIsRootNode?0:scroll.scrollLeft())))};},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval)this.helper.remove();this.helper=null;this.cancelHelperRemoval=false;},_trigger:function(type,event,ui){ui=ui||this._uiHash();$.ui.plugin.call(this,type,[event,ui]);if(type=="drag")this.positionAbs=this._convertPositionTo("absolute");return $.widget.prototype._trigger.call(this,type,event,ui);},plugins:{},_uiHash:function(event){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs};}}));$.extend($.ui.draggable,{version:"1.7.1",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});$.ui.plugin.add("draggable","connectToSortable",{start:function(event,ui){var inst=$(this).data("draggable"),o=inst.options,uiSortable=$.extend({},ui,{item:inst.element});inst.sortables=[];$(o.connectToSortable).each(function(){var sortable=$.data(this,'sortable');if(sortable&&!sortable.options.disabled){inst.sortables.push({instance:sortable,shouldRevert:sortable.options.revert});sortable._refreshItems();sortable._trigger("activate",event,uiSortable);}});},stop:function(event,ui){var inst=$(this).data("draggable"),uiSortable=$.extend({},ui,{item:inst.element});$.each(inst.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;inst.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(event);this.instance.options.helper=this.instance.options._helper;if(inst.options.helper=='original') |
| 243 | +this.instance.currentItem.css({top:'auto',left:'auto'});}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",event,uiSortable);}});},drag:function(event,ui){var inst=$(this).data("draggable"),self=this;var checkPos=function(o){var dyClick=this.offset.click.top,dxClick=this.offset.click.left;var helperTop=this.positionAbs.top,helperLeft=this.positionAbs.left;var itemHeight=o.height,itemWidth=o.width;var itemTop=o.top,itemLeft=o.left;return $.ui.isOver(helperTop+dyClick,helperLeft+dxClick,itemTop,itemLeft,itemHeight,itemWidth);};$.each(inst.sortables,function(i){this.instance.positionAbs=inst.positionAbs;this.instance.helperProportions=inst.helperProportions;this.instance.offset.click=inst.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=$(self).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return ui.helper[0];};event.target=this.instance.currentItem[0];this.instance._mouseCapture(event,true);this.instance._mouseStart(event,true,true);this.instance.offset.click.top=inst.offset.click.top;this.instance.offset.click.left=inst.offset.click.left;this.instance.offset.parent.left-=inst.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=inst.offset.parent.top-this.instance.offset.parent.top;inst._trigger("toSortable",event);inst.dropped=this.instance.element;inst.currentItem=inst.element;this.instance.fromOutside=inst;} |
| 244 | +if(this.instance.currentItem)this.instance._mouseDrag(event);}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger('out',event,this.instance._uiHash(this.instance));this.instance._mouseStop(event,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder)this.instance.placeholder.remove();inst._trigger("fromSortable",event);inst.dropped=false;}};});}});$.ui.plugin.add("draggable","cursor",{start:function(event,ui){var t=$('body'),o=$(this).data('draggable').options;if(t.css("cursor"))o._cursor=t.css("cursor");t.css("cursor",o.cursor);},stop:function(event,ui){var o=$(this).data('draggable').options;if(o._cursor)$('body').css("cursor",o._cursor);}});$.ui.plugin.add("draggable","iframeFix",{start:function(event,ui){var o=$(this).data('draggable').options;$(o.iframeFix===true?"iframe":o.iframeFix).each(function(){$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css($(this).offset()).appendTo("body");});},stop:function(event,ui){$("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this);});}});$.ui.plugin.add("draggable","opacity",{start:function(event,ui){var t=$(ui.helper),o=$(this).data('draggable').options;if(t.css("opacity"))o._opacity=t.css("opacity");t.css('opacity',o.opacity);},stop:function(event,ui){var o=$(this).data('draggable').options;if(o._opacity)$(ui.helper).css('opacity',o._opacity);}});$.ui.plugin.add("draggable","scroll",{start:function(event,ui){var i=$(this).data("draggable");if(i.scrollParent[0]!=document&&i.scrollParent[0].tagName!='HTML')i.overflowOffset=i.scrollParent.offset();},drag:function(event,ui){var i=$(this).data("draggable"),o=i.options,scrolled=false;if(i.scrollParent[0]!=document&&i.scrollParent[0].tagName!='HTML'){if(!o.axis||o.axis!='x'){if((i.overflowOffset.top+i.scrollParent[0].offsetHeight)-event.pageY<o.scrollSensitivity) |
| 245 | +i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop+o.scrollSpeed;else if(event.pageY-i.overflowOffset.top<o.scrollSensitivity) |
| 246 | +i.scrollParent[0].scrollTop=scrolled=i.scrollParent[0].scrollTop-o.scrollSpeed;} |
| 247 | +if(!o.axis||o.axis!='y'){if((i.overflowOffset.left+i.scrollParent[0].offsetWidth)-event.pageX<o.scrollSensitivity) |
| 248 | +i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft+o.scrollSpeed;else if(event.pageX-i.overflowOffset.left<o.scrollSensitivity) |
| 249 | +i.scrollParent[0].scrollLeft=scrolled=i.scrollParent[0].scrollLeft-o.scrollSpeed;}}else{if(!o.axis||o.axis!='x'){if(event.pageY-$(document).scrollTop()<o.scrollSensitivity) |
| 250 | +scrolled=$(document).scrollTop($(document).scrollTop()-o.scrollSpeed);else if($(window).height()-(event.pageY-$(document).scrollTop())<o.scrollSensitivity) |
| 251 | +scrolled=$(document).scrollTop($(document).scrollTop()+o.scrollSpeed);} |
| 252 | +if(!o.axis||o.axis!='y'){if(event.pageX-$(document).scrollLeft()<o.scrollSensitivity) |
| 253 | +scrolled=$(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed);else if($(window).width()-(event.pageX-$(document).scrollLeft())<o.scrollSensitivity) |
| 254 | +scrolled=$(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed);}} |
| 255 | +if(scrolled!==false&&$.ui.ddmanager&&!o.dropBehaviour) |
| 256 | +$.ui.ddmanager.prepareOffsets(i,event);}});$.ui.plugin.add("draggable","snap",{start:function(event,ui){var i=$(this).data("draggable"),o=i.options;i.snapElements=[];$(o.snap.constructor!=String?(o.snap.items||':data(draggable)'):o.snap).each(function(){var $t=$(this);var $o=$t.offset();if(this!=i.element[0])i.snapElements.push({item:this,width:$t.outerWidth(),height:$t.outerHeight(),top:$o.top,left:$o.left});});},drag:function(event,ui){var inst=$(this).data("draggable"),o=inst.options;var d=o.snapTolerance;var x1=ui.offset.left,x2=x1+inst.helperProportions.width,y1=ui.offset.top,y2=y1+inst.helperProportions.height;for(var i=inst.snapElements.length-1;i>=0;i--){var l=inst.snapElements[i].left,r=l+inst.snapElements[i].width,t=inst.snapElements[i].top,b=t+inst.snapElements[i].height;if(!((l-d<x1&&x1<r+d&&t-d<y1&&y1<b+d)||(l-d<x1&&x1<r+d&&t-d<y2&&y2<b+d)||(l-d<x2&&x2<r+d&&t-d<y1&&y1<b+d)||(l-d<x2&&x2<r+d&&t-d<y2&&y2<b+d))){if(inst.snapElements[i].snapping)(inst.options.snap.release&&inst.options.snap.release.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})));inst.snapElements[i].snapping=false;continue;} |
| 257 | +if(o.snapMode!='inner'){var ts=Math.abs(t-y2)<=d;var bs=Math.abs(b-y1)<=d;var ls=Math.abs(l-x2)<=d;var rs=Math.abs(r-x1)<=d;if(ts)ui.position.top=inst._convertPositionTo("relative",{top:t-inst.helperProportions.height,left:0}).top-inst.margins.top;if(bs)ui.position.top=inst._convertPositionTo("relative",{top:b,left:0}).top-inst.margins.top;if(ls)ui.position.left=inst._convertPositionTo("relative",{top:0,left:l-inst.helperProportions.width}).left-inst.margins.left;if(rs)ui.position.left=inst._convertPositionTo("relative",{top:0,left:r}).left-inst.margins.left;} |
| 258 | +var first=(ts||bs||ls||rs);if(o.snapMode!='outer'){var ts=Math.abs(t-y1)<=d;var bs=Math.abs(b-y2)<=d;var ls=Math.abs(l-x1)<=d;var rs=Math.abs(r-x2)<=d;if(ts)ui.position.top=inst._convertPositionTo("relative",{top:t,left:0}).top-inst.margins.top;if(bs)ui.position.top=inst._convertPositionTo("relative",{top:b-inst.helperProportions.height,left:0}).top-inst.margins.top;if(ls)ui.position.left=inst._convertPositionTo("relative",{top:0,left:l}).left-inst.margins.left;if(rs)ui.position.left=inst._convertPositionTo("relative",{top:0,left:r-inst.helperProportions.width}).left-inst.margins.left;} |
| 259 | +if(!inst.snapElements[i].snapping&&(ts||bs||ls||rs||first)) |
| 260 | +(inst.options.snap.snap&&inst.options.snap.snap.call(inst.element,event,$.extend(inst._uiHash(),{snapItem:inst.snapElements[i].item})));inst.snapElements[i].snapping=(ts||bs||ls||rs||first);};}});$.ui.plugin.add("draggable","stack",{start:function(event,ui){var o=$(this).data("draggable").options;var group=$.makeArray($(o.stack.group)).sort(function(a,b){return(parseInt($(a).css("zIndex"),10)||o.stack.min)-(parseInt($(b).css("zIndex"),10)||o.stack.min);});$(group).each(function(i){this.style.zIndex=o.stack.min+i;});this[0].style.zIndex=o.stack.min+group.length;}});$.ui.plugin.add("draggable","zIndex",{start:function(event,ui){var t=$(ui.helper),o=$(this).data("draggable").options;if(t.css("zIndex"))o._zIndex=t.css("zIndex");t.css('zIndex',o.zIndex);},stop:function(event,ui){var o=$(this).data("draggable").options;if(o._zIndex)$(ui.helper).css('zIndex',o._zIndex);}});})(jQuery);(function($){$.widget("ui.resizable",$.extend({},$.ui.mouse,{_init:function(){var self=this,o=this.options;this.element.addClass("ui-resizable");$.extend(this,{_aspectRatio:!!(o.aspectRatio),aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||'ui-resizable-helper':null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css('position'))&&$.browser.opera) |
| 261 | +this.element.css({position:'relative',top:'auto',left:'auto'});this.element.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css('position'),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css('top'),left:this.element.css('left')}));this.element=this.element.parent().data("resizable",this.element.data('resizable'));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css('resize');this.originalElement.css('resize','none');this._proportionallyResizeElements.push(this.originalElement.css({position:'static',zoom:1,display:'block'}));this.originalElement.css({margin:this.originalElement.css('margin')});this._proportionallyResize();} |
| 262 | +this.handles=o.handles||(!$('.ui-resizable-handle',this.element).length?"e,s,se":{n:'.ui-resizable-n',e:'.ui-resizable-e',s:'.ui-resizable-s',w:'.ui-resizable-w',se:'.ui-resizable-se',sw:'.ui-resizable-sw',ne:'.ui-resizable-ne',nw:'.ui-resizable-nw'});if(this.handles.constructor==String){if(this.handles=='all')this.handles='n,e,s,w,se,sw,ne,nw';var n=this.handles.split(",");this.handles={};for(var i=0;i<n.length;i++){var handle=$.trim(n[i]),hname='ui-resizable-'+handle;var axis=$('<div class="ui-resizable-handle '+hname+'"></div>');if(/sw|se|ne|nw/.test(handle))axis.css({zIndex:++o.zIndex});if('se'==handle){axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');};this.handles[handle]='.ui-resizable-'+handle;this.element.append(axis);}} |
| 263 | +this._renderAxis=function(target){target=target||this.element;for(var i in this.handles){if(this.handles[i].constructor==String) |
| 264 | +this.handles[i]=$(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var axis=$(this.handles[i],this.element),padWrapper=0;padWrapper=/sw|ne|nw|se|n|s/.test(i)?axis.outerHeight():axis.outerWidth();var padPos=['padding',/ne|nw|n/.test(i)?'Top':/se|sw|s/.test(i)?'Bottom':/^e$/.test(i)?'Right':'Left'].join("");target.css(padPos,padWrapper);this._proportionallyResize();} |
| 265 | +if(!$(this.handles[i]).length) |
| 266 | +continue;}};this._renderAxis(this.element);this._handles=$('.ui-resizable-handle',this.element).disableSelection();this._handles.mouseover(function(){if(!self.resizing){if(this.className) |
| 267 | +var axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);self.axis=axis&&axis[1]?axis[1]:'se';}});if(o.autoHide){this._handles.hide();$(this.element).addClass("ui-resizable-autohide").hover(function(){$(this).removeClass("ui-resizable-autohide");self._handles.show();},function(){if(!self.resizing){$(this).addClass("ui-resizable-autohide");self._handles.hide();}});} |
| 268 | +this._mouseInit();},destroy:function(){this._mouseDestroy();var _destroy=function(exp){$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();};if(this.elementIsWrapper){_destroy(this.element);var wrapper=this.element;wrapper.parent().append(this.originalElement.css({position:wrapper.css('position'),width:wrapper.outerWidth(),height:wrapper.outerHeight(),top:wrapper.css('top'),left:wrapper.css('left')})).end().remove();} |
| 269 | +this.originalElement.css('resize',this.originalResizeStyle);_destroy(this.originalElement);},_mouseCapture:function(event){var handle=false;for(var i in this.handles){if($(this.handles[i])[0]==event.target)handle=true;} |
| 270 | +return this.options.disabled||!!handle;},_mouseStart:function(event){var o=this.options,iniPos=this.element.position(),el=this.element;this.resizing=true;this.documentScroll={top:$(document).scrollTop(),left:$(document).scrollLeft()};if(el.is('.ui-draggable')||(/absolute/).test(el.css('position'))){el.css({position:'absolute',top:iniPos.top,left:iniPos.left});} |
| 271 | +if($.browser.opera&&(/relative/).test(el.css('position'))) |
| 272 | +el.css({position:'relative',top:'auto',left:'auto'});this._renderProxy();var curleft=num(this.helper.css('left')),curtop=num(this.helper.css('top'));if(o.containment){curleft+=$(o.containment).scrollLeft()||0;curtop+=$(o.containment).scrollTop()||0;} |
| 273 | +this.offset=this.helper.offset();this.position={left:curleft,top:curtop};this.size=this._helper?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()};this.originalSize=this._helper?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()};this.originalPosition={left:curleft,top:curtop};this.sizeDiff={width:el.outerWidth()-el.width(),height:el.outerHeight()-el.height()};this.originalMousePosition={left:event.pageX,top:event.pageY};this.aspectRatio=(typeof o.aspectRatio=='number')?o.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var cursor=$('.ui-resizable-'+this.axis).css('cursor');$('body').css('cursor',cursor=='auto'?this.axis+'-resize':cursor);el.addClass("ui-resizable-resizing");this._propagate("start",event);return true;},_mouseDrag:function(event){var el=this.helper,o=this.options,props={},self=this,smp=this.originalMousePosition,a=this.axis;var dx=(event.pageX-smp.left)||0,dy=(event.pageY-smp.top)||0;var trigger=this._change[a];if(!trigger)return false;var data=trigger.apply(this,[event,dx,dy]),ie6=$.browser.msie&&$.browser.version<7,csdif=this.sizeDiff;if(this._aspectRatio||event.shiftKey) |
| 274 | +data=this._updateRatio(data,event);data=this._respectSize(data,event);this._propagate("resize",event);el.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length) |
| 275 | +this._proportionallyResize();this._updateCache(data);this._trigger('resize',event,this.ui());return false;},_mouseStop:function(event){this.resizing=false;var o=this.options,self=this;if(this._helper){var pr=this._proportionallyResizeElements,ista=pr.length&&(/textarea/i).test(pr[0].nodeName),soffseth=ista&&$.ui.hasScroll(pr[0],'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;var s={width:(self.size.width-soffsetw),height:(self.size.height-soffseth)},left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;if(!o.animate) |
| 276 | +this.element.css($.extend(s,{top:top,left:left}));self.helper.height(self.size.height);self.helper.width(self.size.width);if(this._helper&&!o.animate)this._proportionallyResize();} |
| 277 | +$('body').css('cursor','auto');this.element.removeClass("ui-resizable-resizing");this._propagate("stop",event);if(this._helper)this.helper.remove();return false;},_updateCache:function(data){var o=this.options;this.offset=this.helper.offset();if(isNumber(data.left))this.position.left=data.left;if(isNumber(data.top))this.position.top=data.top;if(isNumber(data.height))this.size.height=data.height;if(isNumber(data.width))this.size.width=data.width;},_updateRatio:function(data,event){var o=this.options,cpos=this.position,csize=this.size,a=this.axis;if(data.height)data.width=(csize.height*this.aspectRatio);else if(data.width)data.height=(csize.width/this.aspectRatio);if(a=='sw'){data.left=cpos.left+(csize.width-data.width);data.top=null;} |
| 278 | +if(a=='nw'){data.top=cpos.top+(csize.height-data.height);data.left=cpos.left+(csize.width-data.width);} |
| 279 | +return data;},_respectSize:function(data,event){var el=this.helper,o=this.options,pRatio=this._aspectRatio||event.shiftKey,a=this.axis,ismaxw=isNumber(data.width)&&o.maxWidth&&(o.maxWidth<data.width),ismaxh=isNumber(data.height)&&o.maxHeight&&(o.maxHeight<data.height),isminw=isNumber(data.width)&&o.minWidth&&(o.minWidth>data.width),isminh=isNumber(data.height)&&o.minHeight&&(o.minHeight>data.height);if(isminw)data.width=o.minWidth;if(isminh)data.height=o.minHeight;if(ismaxw)data.width=o.maxWidth;if(ismaxh)data.height=o.maxHeight;var dw=this.originalPosition.left+this.originalSize.width,dh=this.position.top+this.size.height;var cw=/sw|nw|w/.test(a),ch=/nw|ne|n/.test(a);if(isminw&&cw)data.left=dw-o.minWidth;if(ismaxw&&cw)data.left=dw-o.maxWidth;if(isminh&&ch)data.top=dh-o.minHeight;if(ismaxh&&ch)data.top=dh-o.maxHeight;var isNotwh=!data.width&&!data.height;if(isNotwh&&!data.left&&data.top)data.top=null;else if(isNotwh&&!data.top&&data.left)data.left=null;return data;},_proportionallyResize:function(){var o=this.options;if(!this._proportionallyResizeElements.length)return;var element=this.helper||this.element;for(var i=0;i<this._proportionallyResizeElements.length;i++){var prel=this._proportionallyResizeElements[i];if(!this.borderDif){var b=[prel.css('borderTopWidth'),prel.css('borderRightWidth'),prel.css('borderBottomWidth'),prel.css('borderLeftWidth')],p=[prel.css('paddingTop'),prel.css('paddingRight'),prel.css('paddingBottom'),prel.css('paddingLeft')];this.borderDif=$.map(b,function(v,i){var border=parseInt(v,10)||0,padding=parseInt(p[i],10)||0;return border+padding;});} |
| 280 | +if($.browser.msie&&!(!($(element).is(':hidden')||$(element).parents(':hidden').length))) |
| 281 | +continue;prel.css({height:(element.height()-this.borderDif[0]-this.borderDif[2])||0,width:(element.width()-this.borderDif[1]-this.borderDif[3])||0});};},_renderProxy:function(){var el=this.element,o=this.options;this.elementOffset=el.offset();if(this._helper){this.helper=this.helper||$('<div style="overflow:hidden;"></div>');var ie6=$.browser.msie&&$.browser.version<7,ie6offset=(ie6?1:0),pxyoffset=(ie6?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+pxyoffset,height:this.element.outerHeight()+pxyoffset,position:'absolute',left:this.elementOffset.left-ie6offset+'px',top:this.elementOffset.top-ie6offset+'px',zIndex:++o.zIndex});this.helper.appendTo("body").disableSelection();}else{this.helper=this.element;}},_change:{e:function(event,dx,dy){return{width:this.originalSize.width+dx};},w:function(event,dx,dy){var o=this.options,cs=this.originalSize,sp=this.originalPosition;return{left:sp.left+dx,width:cs.width-dx};},n:function(event,dx,dy){var o=this.options,cs=this.originalSize,sp=this.originalPosition;return{top:sp.top+dy,height:cs.height-dy};},s:function(event,dx,dy){return{height:this.originalSize.height+dy};},se:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]));},sw:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]));},ne:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]));},nw:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]));}},_propagate:function(n,event){$.ui.plugin.call(this,n,[event,this.ui()]);(n!="resize"&&this._trigger(n,event,this.ui()));},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition};}}));$.extend($.ui.resizable,{version:"1.7.1",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});$.ui.plugin.add("resizable","alsoResize",{start:function(event,ui){var self=$(this).data("resizable"),o=self.options;_store=function(exp){$(exp).each(function(){$(this).data("resizable-alsoresize",{width:parseInt($(this).width(),10),height:parseInt($(this).height(),10),left:parseInt($(this).css('left'),10),top:parseInt($(this).css('top'),10)});});};if(typeof(o.alsoResize)=='object'&&!o.alsoResize.parentNode){if(o.alsoResize.length){o.alsoResize=o.alsoResize[0];_store(o.alsoResize);} |
| 282 | +else{$.each(o.alsoResize,function(exp,c){_store(exp);});}}else{_store(o.alsoResize);}},resize:function(event,ui){var self=$(this).data("resizable"),o=self.options,os=self.originalSize,op=self.originalPosition;var delta={height:(self.size.height-os.height)||0,width:(self.size.width-os.width)||0,top:(self.position.top-op.top)||0,left:(self.position.left-op.left)||0},_alsoResize=function(exp,c){$(exp).each(function(){var el=$(this),start=$(this).data("resizable-alsoresize"),style={},css=c&&c.length?c:['width','height','top','left'];$.each(css||['width','height','top','left'],function(i,prop){var sum=(start[prop]||0)+(delta[prop]||0);if(sum&&sum>=0) |
| 283 | +style[prop]=sum||null;});if(/relative/.test(el.css('position'))&&$.browser.opera){self._revertToRelativePosition=true;el.css({position:'absolute',top:'auto',left:'auto'});} |
| 284 | +el.css(style);});};if(typeof(o.alsoResize)=='object'&&!o.alsoResize.nodeType){$.each(o.alsoResize,function(exp,c){_alsoResize(exp,c);});}else{_alsoResize(o.alsoResize);}},stop:function(event,ui){var self=$(this).data("resizable");if(self._revertToRelativePosition&&$.browser.opera){self._revertToRelativePosition=false;el.css({position:'relative'});} |
| 285 | +$(this).removeData("resizable-alsoresize-start");}});$.ui.plugin.add("resizable","animate",{stop:function(event,ui){var self=$(this).data("resizable"),o=self.options;var pr=self._proportionallyResizeElements,ista=pr.length&&(/textarea/i).test(pr[0].nodeName),soffseth=ista&&$.ui.hasScroll(pr[0],'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;var style={width:(self.size.width-soffsetw),height:(self.size.height-soffseth)},left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;self.element.animate($.extend(style,top&&left?{top:top,left:left}:{}),{duration:o.animateDuration,easing:o.animateEasing,step:function(){var data={width:parseInt(self.element.css('width'),10),height:parseInt(self.element.css('height'),10),top:parseInt(self.element.css('top'),10),left:parseInt(self.element.css('left'),10)};if(pr&&pr.length)$(pr[0]).css({width:data.width,height:data.height});self._updateCache(data);self._propagate("resize",event);}});}});$.ui.plugin.add("resizable","containment",{start:function(event,ui){var self=$(this).data("resizable"),o=self.options,el=self.element;var oc=o.containment,ce=(oc instanceof $)?oc.get(0):(/parent/.test(oc))?el.parent().get(0):oc;if(!ce)return;self.containerElement=$(ce);if(/document/.test(oc)||oc==document){self.containerOffset={left:0,top:0};self.containerPosition={left:0,top:0};self.parentData={element:$(document),left:0,top:0,width:$(document).width(),height:$(document).height()||document.body.parentNode.scrollHeight};} |
| 286 | +else{var element=$(ce),p=[];$(["Top","Right","Left","Bottom"]).each(function(i,name){p[i]=num(element.css("padding"+name));});self.containerOffset=element.offset();self.containerPosition=element.position();self.containerSize={height:(element.innerHeight()-p[3]),width:(element.innerWidth()-p[1])};var co=self.containerOffset,ch=self.containerSize.height,cw=self.containerSize.width,width=($.ui.hasScroll(ce,"left")?ce.scrollWidth:cw),height=($.ui.hasScroll(ce)?ce.scrollHeight:ch);self.parentData={element:ce,left:co.left,top:co.top,width:width,height:height};}},resize:function(event,ui){var self=$(this).data("resizable"),o=self.options,ps=self.containerSize,co=self.containerOffset,cs=self.size,cp=self.position,pRatio=self._aspectRatio||event.shiftKey,cop={top:0,left:0},ce=self.containerElement;if(ce[0]!=document&&(/static/).test(ce.css('position')))cop=co;if(cp.left<(self._helper?co.left:0)){self.size.width=self.size.width+(self._helper?(self.position.left-co.left):(self.position.left-cop.left));if(pRatio)self.size.height=self.size.width/o.aspectRatio;self.position.left=o.helper?co.left:0;} |
| 287 | +if(cp.top<(self._helper?co.top:0)){self.size.height=self.size.height+(self._helper?(self.position.top-co.top):self.position.top);if(pRatio)self.size.width=self.size.height*o.aspectRatio;self.position.top=self._helper?co.top:0;} |
| 288 | +self.offset.left=self.parentData.left+self.position.left;self.offset.top=self.parentData.top+self.position.top;var woset=Math.abs((self._helper?self.offset.left-cop.left:(self.offset.left-cop.left))+self.sizeDiff.width),hoset=Math.abs((self._helper?self.offset.top-cop.top:(self.offset.top-co.top))+self.sizeDiff.height);var isParent=self.containerElement.get(0)==self.element.parent().get(0),isOffsetRelative=/relative|absolute/.test(self.containerElement.css('position'));if(isParent&&isOffsetRelative)woset-=self.parentData.left;if(woset+self.size.width>=self.parentData.width){self.size.width=self.parentData.width-woset;if(pRatio)self.size.height=self.size.width/self.aspectRatio;} |
| 289 | +if(hoset+self.size.height>=self.parentData.height){self.size.height=self.parentData.height-hoset;if(pRatio)self.size.width=self.size.height*self.aspectRatio;}},stop:function(event,ui){var self=$(this).data("resizable"),o=self.options,cp=self.position,co=self.containerOffset,cop=self.containerPosition,ce=self.containerElement;var helper=$(self.helper),ho=helper.offset(),w=helper.outerWidth()-self.sizeDiff.width,h=helper.outerHeight()-self.sizeDiff.height;if(self._helper&&!o.animate&&(/relative/).test(ce.css('position'))) |
| 290 | +$(this).css({left:ho.left-cop.left-co.left,width:w,height:h});if(self._helper&&!o.animate&&(/static/).test(ce.css('position'))) |
| 291 | +$(this).css({left:ho.left-cop.left-co.left,width:w,height:h});}});$.ui.plugin.add("resizable","ghost",{start:function(event,ui){var self=$(this).data("resizable"),o=self.options,cs=self.size;self.ghost=self.originalElement.clone();self.ghost.css({opacity:.25,display:'block',position:'relative',height:cs.height,width:cs.width,margin:0,left:0,top:0}).addClass('ui-resizable-ghost').addClass(typeof o.ghost=='string'?o.ghost:'');self.ghost.appendTo(self.helper);},resize:function(event,ui){var self=$(this).data("resizable"),o=self.options;if(self.ghost)self.ghost.css({position:'relative',height:self.size.height,width:self.size.width});},stop:function(event,ui){var self=$(this).data("resizable"),o=self.options;if(self.ghost&&self.helper)self.helper.get(0).removeChild(self.ghost.get(0));}});$.ui.plugin.add("resizable","grid",{resize:function(event,ui){var self=$(this).data("resizable"),o=self.options,cs=self.size,os=self.originalSize,op=self.originalPosition,a=self.axis,ratio=o._aspectRatio||event.shiftKey;o.grid=typeof o.grid=="number"?[o.grid,o.grid]:o.grid;var ox=Math.round((cs.width-os.width)/(o.grid[0]||1))*(o.grid[0]||1),oy=Math.round((cs.height-os.height)/(o.grid[1]||1))*(o.grid[1]||1);if(/^(se|s|e)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;} |
| 292 | +else if(/^(ne)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.top=op.top-oy;} |
| 293 | +else if(/^(sw)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.left=op.left-ox;} |
| 294 | +else{self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.top=op.top-oy;self.position.left=op.left-ox;}}});var num=function(v){return parseInt(v,10)||0;};var isNumber=function(value){return!isNaN(parseInt(value,10));};})(jQuery);(function($){$.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable;} |
| 295 | +this._tabify(true);},_setData:function(key,value){if(key=='selected'){if(this.options.collapsible&&value==this.options.selected){return;} |
| 296 | +this.select(value);} |
| 297 | +else{this.options[key]=value;if(key=='deselectable'){this.options.collapsible=value;} |
| 298 | +this._tabify();}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,'_').replace(/[^A-Za-z0-9\-_:\.]/g,'')||this.options.idPrefix+$.data(a);},_sanitizeSelector:function(hash){return hash.replace(/:/g,'\\:');},_cookie:function(){var cookie=this.cookie||(this.cookie=this.options.cookie.name||'ui-tabs-'+$.data(this.list[0]));return $.cookie.apply(null,[cookie].concat($.makeArray(arguments)));},_ui:function(tab,panel){return{tab:tab,panel:panel,index:this.anchors.index(tab)};},_cleanup:function(){this.lis.filter('.ui-state-processing').removeClass('ui-state-processing').find('span:data(label.tabs)').each(function(){var el=$(this);el.html(el.data('label.tabs')).removeData('label.tabs');});},_tabify:function(init){this.list=this.element.children('ul:first');this.lis=$('li:has(a[href])',this.list);this.anchors=this.lis.map(function(){return $('a',this)[0];});this.panels=$([]);var self=this,o=this.options;var fragmentId=/^#.+/;this.anchors.each(function(i,a){var href=$(a).attr('href');var hrefBase=href.split('#')[0],baseEl;if(hrefBase&&(hrefBase===location.toString().split('#')[0]||(baseEl=$('base')[0])&&hrefBase===baseEl.href)){href=a.hash;a.href=href;} |
| 299 | +if(fragmentId.test(href)){self.panels=self.panels.add(self._sanitizeSelector(href));} |
| 300 | +else if(href!='#'){$.data(a,'href.tabs',href);$.data(a,'load.tabs',href.replace(/#.*$/,''));var id=self._tabId(a);a.href='#'+id;var $panel=$('#'+id);if(!$panel.length){$panel=$(o.panelTemplate).attr('id',id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom').insertAfter(self.panels[i-1]||self.list);$panel.data('destroy.tabs',true);} |
| 301 | +self.panels=self.panels.add($panel);} |
| 302 | +else{o.disabled.push(i);}});if(init){this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');this.lis.addClass('ui-state-default ui-corner-top');this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');if(o.selected===undefined){if(location.hash){this.anchors.each(function(i,a){if(a.hash==location.hash){o.selected=i;return false;}});} |
| 303 | +if(typeof o.selected!='number'&&o.cookie){o.selected=parseInt(self._cookie(),10);} |
| 304 | +if(typeof o.selected!='number'&&this.lis.filter('.ui-tabs-selected').length){o.selected=this.lis.index(this.lis.filter('.ui-tabs-selected'));} |
| 305 | +o.selected=o.selected||0;} |
| 306 | +else if(o.selected===null){o.selected=-1;} |
| 307 | +o.selected=((o.selected>=0&&this.anchors[o.selected])||o.selected<0)?o.selected:0;o.disabled=$.unique(o.disabled.concat($.map(this.lis.filter('.ui-state-disabled'),function(n,i){return self.lis.index(n);}))).sort();if($.inArray(o.selected,o.disabled)!=-1){o.disabled.splice($.inArray(o.selected,o.disabled),1);} |
| 308 | +this.panels.addClass('ui-tabs-hide');this.lis.removeClass('ui-tabs-selected ui-state-active');if(o.selected>=0&&this.anchors.length){this.panels.eq(o.selected).removeClass('ui-tabs-hide');this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');self.element.queue("tabs",function(){self._trigger('show',null,self._ui(self.anchors[o.selected],self.panels[o.selected]));});this.load(o.selected);} |
| 309 | +$(window).bind('unload',function(){self.lis.add(self.anchors).unbind('.tabs');self.lis=self.anchors=self.panels=null;});} |
| 310 | +else{o.selected=this.lis.index(this.lis.filter('.ui-tabs-selected'));} |
| 311 | +this.element[o.collapsible?'addClass':'removeClass']('ui-tabs-collapsible');if(o.cookie){this._cookie(o.selected,o.cookie);} |
| 312 | +for(var i=0,li;(li=this.lis[i]);i++){$(li)[$.inArray(i,o.disabled)!=-1&&!$(li).hasClass('ui-tabs-selected')?'addClass':'removeClass']('ui-state-disabled');} |
| 313 | +if(o.cache===false){this.anchors.removeData('cache.tabs');} |
| 314 | +this.lis.add(this.anchors).unbind('.tabs');if(o.event!='mouseover'){var addState=function(state,el){if(el.is(':not(.ui-state-disabled)')){el.addClass('ui-state-'+state);}};var removeState=function(state,el){el.removeClass('ui-state-'+state);};this.lis.bind('mouseover.tabs',function(){addState('hover',$(this));});this.lis.bind('mouseout.tabs',function(){removeState('hover',$(this));});this.anchors.bind('focus.tabs',function(){addState('focus',$(this).closest('li'));});this.anchors.bind('blur.tabs',function(){removeState('focus',$(this).closest('li'));});} |
| 315 | +var hideFx,showFx;if(o.fx){if($.isArray(o.fx)){hideFx=o.fx[0];showFx=o.fx[1];} |
| 316 | +else{hideFx=showFx=o.fx;}} |
| 317 | +function resetStyle($el,fx){$el.css({display:''});if($.browser.msie&&fx.opacity){$el[0].style.removeAttribute('filter');}} |
| 318 | +var showTab=showFx?function(clicked,$show){$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');$show.hide().removeClass('ui-tabs-hide').animate(showFx,showFx.duration||'normal',function(){resetStyle($show,showFx);self._trigger('show',null,self._ui(clicked,$show[0]));});}:function(clicked,$show){$(clicked).closest('li').removeClass('ui-state-default').addClass('ui-tabs-selected ui-state-active');$show.removeClass('ui-tabs-hide');self._trigger('show',null,self._ui(clicked,$show[0]));};var hideTab=hideFx?function(clicked,$hide){$hide.animate(hideFx,hideFx.duration||'normal',function(){self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');$hide.addClass('ui-tabs-hide');resetStyle($hide,hideFx);self.element.dequeue("tabs");});}:function(clicked,$hide,$show){self.lis.removeClass('ui-tabs-selected ui-state-active').addClass('ui-state-default');$hide.addClass('ui-tabs-hide');self.element.dequeue("tabs");};this.anchors.bind(o.event+'.tabs',function(){var el=this,$li=$(this).closest('li'),$hide=self.panels.filter(':not(.ui-tabs-hide)'),$show=$(self._sanitizeSelector(this.hash));if(($li.hasClass('ui-tabs-selected')&&!o.collapsible)||$li.hasClass('ui-state-disabled')||$li.hasClass('ui-state-processing')||self._trigger('select',null,self._ui(this,$show[0]))===false){this.blur();return false;} |
| 319 | +o.selected=self.anchors.index(this);self.abort();if(o.collapsible){if($li.hasClass('ui-tabs-selected')){o.selected=-1;if(o.cookie){self._cookie(o.selected,o.cookie);} |
| 320 | +self.element.queue("tabs",function(){hideTab(el,$hide);}).dequeue("tabs");this.blur();return false;} |
| 321 | +else if(!$hide.length){if(o.cookie){self._cookie(o.selected,o.cookie);} |
| 322 | +self.element.queue("tabs",function(){showTab(el,$show);});self.load(self.anchors.index(this));this.blur();return false;}} |
| 323 | +if(o.cookie){self._cookie(o.selected,o.cookie);} |
| 324 | +if($show.length){if($hide.length){self.element.queue("tabs",function(){hideTab(el,$hide);});} |
| 325 | +self.element.queue("tabs",function(){showTab(el,$show);});self.load(self.anchors.index(this));} |
| 326 | +else{throw'jQuery UI Tabs: Mismatching fragment identifier.';} |
| 327 | +if($.browser.msie){this.blur();}});this.anchors.bind('click.tabs',function(){return false;});},destroy:function(){var o=this.options;this.abort();this.element.unbind('.tabs').removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible').removeData('tabs');this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');this.anchors.each(function(){var href=$.data(this,'href.tabs');if(href){this.href=href;} |
| 328 | +var $this=$(this).unbind('.tabs');$.each(['href','load','cache'],function(i,prefix){$this.removeData(prefix+'.tabs');});});this.lis.unbind('.tabs').add(this.panels).each(function(){if($.data(this,'destroy.tabs')){$(this).remove();} |
| 329 | +else{$(this).removeClass(['ui-state-default','ui-corner-top','ui-tabs-selected','ui-state-active','ui-state-hover','ui-state-focus','ui-state-disabled','ui-tabs-panel','ui-widget-content','ui-corner-bottom','ui-tabs-hide'].join(' '));}});if(o.cookie){this._cookie(null,o.cookie);}},add:function(url,label,index){if(index===undefined){index=this.anchors.length;} |
| 330 | +var self=this,o=this.options,$li=$(o.tabTemplate.replace(/#\{href\}/g,url).replace(/#\{label\}/g,label)),id=!url.indexOf('#')?url.replace('#',''):this._tabId($('a',$li)[0]);$li.addClass('ui-state-default ui-corner-top').data('destroy.tabs',true);var $panel=$('#'+id);if(!$panel.length){$panel=$(o.panelTemplate).attr('id',id).data('destroy.tabs',true);} |
| 331 | +$panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');if(index>=this.lis.length){$li.appendTo(this.list);$panel.appendTo(this.list[0].parentNode);} |
| 332 | +else{$li.insertBefore(this.lis[index]);$panel.insertBefore(this.panels[index]);} |
| 333 | +o.disabled=$.map(o.disabled,function(n,i){return n>=index?++n:n;});this._tabify();if(this.anchors.length==1){$li.addClass('ui-tabs-selected ui-state-active');$panel.removeClass('ui-tabs-hide');this.element.queue("tabs",function(){self._trigger('show',null,self._ui(self.anchors[0],self.panels[0]));});this.load(0);} |
| 334 | +this._trigger('add',null,this._ui(this.anchors[index],this.panels[index]));},remove:function(index){var o=this.options,$li=this.lis.eq(index).remove(),$panel=this.panels.eq(index).remove();if($li.hasClass('ui-tabs-selected')&&this.anchors.length>1){this.select(index+(index+1<this.anchors.length?1:-1));} |
| 335 | +o.disabled=$.map($.grep(o.disabled,function(n,i){return n!=index;}),function(n,i){return n>=index?--n:n;});this._tabify();this._trigger('remove',null,this._ui($li.find('a')[0],$panel[0]));},enable:function(index){var o=this.options;if($.inArray(index,o.disabled)==-1){return;} |
| 336 | +this.lis.eq(index).removeClass('ui-state-disabled');o.disabled=$.grep(o.disabled,function(n,i){return n!=index;});this._trigger('enable',null,this._ui(this.anchors[index],this.panels[index]));},disable:function(index){var self=this,o=this.options;if(index!=o.selected){this.lis.eq(index).addClass('ui-state-disabled');o.disabled.push(index);o.disabled.sort();this._trigger('disable',null,this._ui(this.anchors[index],this.panels[index]));}},select:function(index){if(typeof index=='string'){index=this.anchors.index(this.anchors.filter('[href$='+index+']'));} |
| 337 | +else if(index===null){index=-1;} |
| 338 | +if(index==-1&&this.options.collapsible){index=this.options.selected;} |
| 339 | +this.anchors.eq(index).trigger(this.options.event+'.tabs');},load:function(index){var self=this,o=this.options,a=this.anchors.eq(index)[0],url=$.data(a,'load.tabs');this.abort();if(!url||this.element.queue("tabs").length!==0&&$.data(a,'cache.tabs')){this.element.dequeue("tabs");return;} |
| 340 | +this.lis.eq(index).addClass('ui-state-processing');if(o.spinner){var span=$('span',a);span.data('label.tabs',span.html()).html(o.spinner);} |
| 341 | +this.xhr=$.ajax($.extend({},o.ajaxOptions,{url:url,success:function(r,s){$(self._sanitizeSelector(a.hash)).html(r);self._cleanup();if(o.cache){$.data(a,'cache.tabs',true);} |
| 342 | +self._trigger('load',null,self._ui(self.anchors[index],self.panels[index]));try{o.ajaxOptions.success(r,s);} |
| 343 | +catch(e){} |
| 344 | +self.element.dequeue("tabs");}}));},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr;} |
| 345 | +this._cleanup();},url:function(index,url){this.anchors.eq(index).removeData('cache.tabs').data('load.tabs',url);},length:function(){return this.anchors.length;}});$.extend($.ui.tabs,{version:'1.7.1',getter:'length',defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:'click',fx:null,idPrefix:'ui-tabs-',panelTemplate:'<div></div>',spinner:'<em>Loading…</em>',tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});$.extend($.ui.tabs.prototype,{rotation:null,rotate:function(ms,continuing){var self=this,o=this.options;var rotate=self._rotate||(self._rotate=function(e){clearTimeout(self.rotation);self.rotation=setTimeout(function(){var t=o.selected;self.select(++t<self.anchors.length?t:0);},ms);if(e){e.stopPropagation();}});var stop=self._unrotate||(self._unrotate=!continuing?function(e){if(e.clientX){self.rotate(null);}}:function(e){t=o.selected;rotate();});if(ms){this.element.bind('tabsshow',rotate);this.anchors.bind(o.event+'.tabs',stop);rotate();} |
| 346 | +else{clearTimeout(self.rotation);this.element.unbind('tabsshow',rotate);this.anchors.unbind(o.event+'.tabs',stop);delete this._rotate;delete this._unrotate;}}});})(jQuery); |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jui.combined.min.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 347 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js |
— | — | @@ -0,0 +1,505 @@ |
| 2 | +( function( $ ) { |
| 3 | + $.ArticleAssessment = { |
| 4 | + 'config': { |
| 5 | + 'authtoken': '', |
| 6 | + 'userID': '', |
| 7 | + 'pageID': wgArticleId, |
| 8 | + 'revID': wgCurRevisionId |
| 9 | + }, |
| 10 | + 'messages': {}, |
| 11 | + 'settings': { |
| 12 | + 'endpoint': wgScriptPath + '/api.php?', |
| 13 | + 'fieldMessages' : [ |
| 14 | + 'wellsourced', |
| 15 | + 'neutrality', |
| 16 | + 'completeness', |
| 17 | + 'readability' |
| 18 | + ], |
| 19 | + 'fieldHintSuffix': '-tooltip', |
| 20 | + 'fieldPrefix': 'articleassessment-rating-', |
| 21 | + 'fieldHTML': '<div class="field-wrapper"> \ |
| 22 | + <label class="rating-field-label"></label> \ |
| 23 | + <select class="rating-field"> \ |
| 24 | + <option value="1">1</option> \ |
| 25 | + <option value="2">2</option> \ |
| 26 | + <option value="3">3</option> \ |
| 27 | + <option value="4">4</option> \ |
| 28 | + <option value="5">5</option> \ |
| 29 | + </select> \ |
| 30 | + </div>', |
| 31 | + 'structureHTML': '<div class="article-assessment-wrapper"> \ |
| 32 | + <form action="rate" method="post" id="article-assessment"> \ |
| 33 | + <fieldset id="article-assessment-rate"> \ |
| 34 | + <legend></legend> \ |
| 35 | + <div class="article-assessment-information"> \ |
| 36 | + <span class="article-assessment-rate-instructions"></span> \ |
| 37 | + <span class="article-assessment-rate-feedback"></span> \ |
| 38 | + </div> \ |
| 39 | + <div class="article-assessment-rating-fields"></div> \ |
| 40 | + <div class="article-assessment-submit"> \ |
| 41 | + <input type="submit" value="Submit" /> \ |
| 42 | + </div> \ |
| 43 | + </fieldset> \ |
| 44 | + <fieldset id="article-assessment-ratings"> \ |
| 45 | + <legend></legend> \ |
| 46 | + <div class="article-assessment-information"> \ |
| 47 | + <span class="article-assessment-show-ratings"></span> \ |
| 48 | + <span class="article-assessment-hide-ratings"></span> \ |
| 49 | + </div> \ |
| 50 | + </fieldset> \ |
| 51 | + </form> \ |
| 52 | + </div>', |
| 53 | + 'ratingHTML': '<div class="article-assessment-rating"> \ |
| 54 | + <span class="article-assessment-rating-field-name"></span> \ |
| 55 | + <span class="article-assessment-rating-field-value-wrapper"> \ |
| 56 | + <span class="article-assessment-rating-field-value">0%</span> \ |
| 57 | + </span> \ |
| 58 | + <span class="article-assessment-rating-count"></span> \ |
| 59 | + </div>', |
| 60 | + 'staleMSG': '<span class="article-assessment-stale-msg"></span>' |
| 61 | + }, |
| 62 | + |
| 63 | + 'fn' : { |
| 64 | + 'init': function( $$options ) { |
| 65 | + // merge options with the config |
| 66 | + var settings = $.extend( {}, $.ArticleAssessment.settings, $$options ); |
| 67 | + var config = $.ArticleAssessment.config; |
| 68 | + // if this is an anon user, get a unique identifier for them |
| 69 | + // load up the stored ratings and update the markup if the cookie exists |
| 70 | + var userToken = $.cookie( 'mwArticleAssessmentUserToken' ); |
| 71 | + if ( typeof userToken == 'undefined' || userToken == null ) { |
| 72 | + function randomString( string_length ) { |
| 73 | + var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; |
| 74 | + var randomstring = ''; |
| 75 | + for ( var i = 0; i < string_length; i++ ) { |
| 76 | + var rnum = Math.floor( Math.random() * chars.length ); |
| 77 | + randomstring += chars.substring( rnum, rnum + 1 ); |
| 78 | + } |
| 79 | + return randomstring; |
| 80 | + } |
| 81 | + userToken = randomString( 32 ); |
| 82 | + $.cookie( 'mwArticleAssessmentUserToken', userToken, { 'expires': 30, 'path': '/' } ); |
| 83 | + } |
| 84 | + if ( !wgUserName ) { |
| 85 | + config.userID = userToken; |
| 86 | + } |
| 87 | + // setup our markup using the template variables in settings |
| 88 | + var $structure = $( settings.structureHTML ), |
| 89 | + instructions = $.ArticleAssessment.fn.getMsg( 'articleassessment-pleaserate' ), |
| 90 | + feedback = $.ArticleAssessment.fn.getMsg( 'articleassessment-featurefeedback' ), |
| 91 | + yourfeedback = $.ArticleAssessment.fn.getMsg( 'articleassessment-yourfeedback'), |
| 92 | + articlerating = $.ArticleAssessment.fn.getMsg( 'articleassessment-articlerating' ), |
| 93 | + resultshide = $.ArticleAssessment.fn.getMsg( 'articleassessment-results-hide' ), |
| 94 | + resultsshow = $.ArticleAssessment.fn.getMsg( 'articleassessment-results-show' ); |
| 95 | + $structure |
| 96 | + .find( '#article-assessment-rate legend' ) |
| 97 | + .text( yourfeedback ) |
| 98 | + .end() |
| 99 | + .find( '.article-assessment-rate-instructions' ) |
| 100 | + .text( instructions ) |
| 101 | + .end() |
| 102 | + .find( '.article-assessment-rate-feedback' ) |
| 103 | + .html( feedback ) |
| 104 | + .find( '.feedbacklink' ) |
| 105 | + .wrap( '<a href="#"></a>' ) |
| 106 | + .parent() |
| 107 | + .click( $.ArticleAssessment.fn.showFeedback ) |
| 108 | + .end() |
| 109 | + .end() |
| 110 | + .end() |
| 111 | + .find( '#article-assessment-ratings legend' ) |
| 112 | + .text( articlerating ) |
| 113 | + .end() |
| 114 | + .find( '.article-assessment-show-ratings' ) |
| 115 | + .html( resultsshow ) |
| 116 | + .find( '.showlink' ) |
| 117 | + .wrap( '<a href="#"></a>' ) |
| 118 | + .parent() |
| 119 | + .click( $.ArticleAssessment.fn.showRatings ) |
| 120 | + .end() |
| 121 | + .end() |
| 122 | + .end() |
| 123 | + .find( '.article-assessment-hide-ratings' ) |
| 124 | + .html( resultshide ) |
| 125 | + .find ( '.hidelink' ) |
| 126 | + .wrap( '<a href="#"></a>' ) |
| 127 | + .parent() |
| 128 | + .click( $.ArticleAssessment.fn.hideRatings ) |
| 129 | + .end() |
| 130 | + .end() |
| 131 | + .end(); |
| 132 | + for ( var i = 0; i < settings.fieldMessages.length; i++ ) { |
| 133 | + var $field = $( settings.fieldHTML ), |
| 134 | + $rating = $( settings.ratingHTML ), |
| 135 | + label = $.ArticleAssessment.fn.getMsg( settings.fieldPrefix + settings.fieldMessages[i] ), |
| 136 | + field = settings.fieldMessages[i], |
| 137 | + hint = $.ArticleAssessment.fn.getMsg( settings.fieldPrefix + settings.fieldMessages[i] + settings.fieldHintSuffix ), |
| 138 | + count = $.ArticleAssessment.fn.getMsg( 'articleassessment-noratings', [0, 0] ); |
| 139 | + // initialize the field html |
| 140 | + $field |
| 141 | + .attr( 'id', 'articleassessment-rate-' + field ) |
| 142 | + .find( 'label' ) |
| 143 | + .attr( 'for', 'rating_' + field ) |
| 144 | + .attr( 'original-title', hint ) |
| 145 | + .text( label ) |
| 146 | + .end() |
| 147 | + .find( 'select' ) |
| 148 | + .attr( 'id', 'rating_' + field ) |
| 149 | + .attr( 'name', 'rating[' + field + ']' ); |
| 150 | + // initialize the rating html |
| 151 | + $rating |
| 152 | + .attr( 'id', 'articleassessment-rating-' + field ) |
| 153 | + .find( '.article-assessment-rating-field-name' ) |
| 154 | + .text( label ) |
| 155 | + .end() |
| 156 | + .find( '.article-assessment-rating-count' ) |
| 157 | + .text( count ); |
| 158 | + // append the field and rating html |
| 159 | + $structure |
| 160 | + .find( '.article-assessment-rating-fields' ) |
| 161 | + .append( $field ) |
| 162 | + .end() |
| 163 | + .find( '#article-assessment-ratings' ) |
| 164 | + .append( $rating ); |
| 165 | + } |
| 166 | + // store our settings and configuration for later |
| 167 | + $structure.find( '#article-assessment' ).data( 'articleAssessment-context', { 'settings': settings, 'config': config } ); |
| 168 | + $( '#catlinks' ).before( $structure ); |
| 169 | + // Hide the ratings initially |
| 170 | + $.ArticleAssessment.fn.hideRatings(); |
| 171 | + |
| 172 | + |
| 173 | + // set the height of our smaller fieldset to match the taller |
| 174 | + if ( $( '#article-assessment-rate' ).height() > $( '#article-assessment-ratings' ).height() ) { |
| 175 | + $( '#article-assessment-ratings' ).css( 'minHeight', $( '#article-assessment-rate' ).height() ); |
| 176 | + } else { |
| 177 | + $( '#article-assessment-rate' ).css( 'minHeight', $( '#article-assessment-ratings' ).height() ); |
| 178 | + } |
| 179 | + // attempt to fetch the ratings |
| 180 | + $.ArticleAssessment.fn.getRatingData(); |
| 181 | + |
| 182 | + // initialize the star plugin |
| 183 | + $( '.rating-field' ).each( function() { |
| 184 | + $( this ) |
| 185 | + .wrapAll( '<div class="rating-field"></div>' ) |
| 186 | + .parent() |
| 187 | + .stars( { |
| 188 | + inputType: 'select', |
| 189 | + callback: function( value, link ) { |
| 190 | + // remove any stale or rated classes |
| 191 | + value.$stars.each( function() { |
| 192 | + $( this ) |
| 193 | + .removeClass( 'ui-stars-star-stale' ) |
| 194 | + .removeClass( 'ui-stars-star-rated' ); |
| 195 | + // enable our submit button if it's still disabled |
| 196 | + $( '#article-assessment input:disabled' ).removeAttr( 'disabled' ); |
| 197 | + } ); |
| 198 | + } |
| 199 | + } ); |
| 200 | + }); |
| 201 | + // intialize the tooltips |
| 202 | + $( '.field-wrapper label[original-title]' ).each( function() { |
| 203 | + $( this ) |
| 204 | + .after( $( '<span class="rating-field-hint" />' ) |
| 205 | + .attr( 'original-title', $( this ).attr( 'original-title' ) ) |
| 206 | + .tipsy( { gravity : 'se', opacity: '0.9' } ) ); |
| 207 | + } ); |
| 208 | + // bind submit event to the form |
| 209 | + $( '#article-assessment' ) |
| 210 | + .submit( function() { $.ArticleAssessment.fn.submitRating(); return false; } ); |
| 211 | + // prevent the submit button for being active until all ratings are filled out |
| 212 | + $( '#article-assessment input[type=submit]' ) |
| 213 | + .attr( 'disabled', 'disabled' ); |
| 214 | + }, |
| 215 | + 'showRatings': function() { |
| 216 | + $( '#article-assessment-ratings' ) |
| 217 | + .removeClass( 'article-assessment-ratings-disabled' ) |
| 218 | + .find( '.article-assessment-show-ratings' ) |
| 219 | + .hide() |
| 220 | + .end() |
| 221 | + .find( '.article-assessment-hide-ratings' ) |
| 222 | + .show(); |
| 223 | + return false; |
| 224 | + }, |
| 225 | + 'hideRatings': function() { |
| 226 | + $( '#article-assessment-ratings' ) |
| 227 | + .addClass( 'article-assessment-ratings-disabled' ) |
| 228 | + .find( '.article-assessment-hide-ratings' ) |
| 229 | + .hide() |
| 230 | + .end() |
| 231 | + .find( '.article-assessment-show-ratings' ) |
| 232 | + .show(); |
| 233 | + return false; |
| 234 | + |
| 235 | + }, |
| 236 | + |
| 237 | + // Request the ratings data for the current article |
| 238 | + 'getRatingData': function() { |
| 239 | + var config = $( '#article-assessment' ).data( 'articleAssessment-context' ).config; |
| 240 | + var requestData = { |
| 241 | + 'action': 'query', |
| 242 | + 'list': 'articleassessment', |
| 243 | + 'aapageid': config.pageID, |
| 244 | + 'aauserrating': 1, |
| 245 | + 'format': 'json' |
| 246 | + } |
| 247 | + if ( config.userID.length == 32 ) { |
| 248 | + requestData.aaanontoken = config.userID; |
| 249 | + } |
| 250 | + |
| 251 | + var request = $.ajax( { |
| 252 | + url: wgScriptPath + '/api.php', |
| 253 | + data: requestData, |
| 254 | + dataType: 'json', |
| 255 | + success: $.ArticleAssessment.fn.afterGetRatingData, |
| 256 | + error: function( XMLHttpRequest, textStatus, errorThrown ) { |
| 257 | + $.ArticleAssessment.fn.flashNotice( $.ArticleAssessment.fn.getMsg( 'articleassessment-error' ), |
| 258 | + { 'class': 'article-assessment-error-msg' } ); |
| 259 | + } |
| 260 | + } ); |
| 261 | + }, |
| 262 | + 'afterGetRatingData' : function( data ) { |
| 263 | + var settings = $( '#article-assessment' ).data( 'articleAssessment-context' ).settings; |
| 264 | + // add the correct data to the markup |
| 265 | + if ( data.query && data.query.articleassessment && data.query.articleassessment.length > 0 ) { |
| 266 | + for ( var r in data.query.articleassessment[0].ratings ) { |
| 267 | + var rating = data.query.articleassessment[0].ratings[r], |
| 268 | + $rating = $( '#' + rating.ratingdesc ), |
| 269 | + count = rating.count, |
| 270 | + total = ( rating.total / count ).toFixed( 1 ), |
| 271 | + label = $.ArticleAssessment.fn.getMsg( 'articleassessment-noratings', [total, count] ); |
| 272 | + $rating |
| 273 | + .find( '.article-assessment-rating-field-value' ) |
| 274 | + .text( total ) |
| 275 | + .end() |
| 276 | + .find( '.article-assessment-rating-count' ) |
| 277 | + .text( label ); |
| 278 | + if( rating.userrating ) { |
| 279 | + var $rateControl = $( '#' + rating.ratingdesc.replace( 'rating', 'rate' ) + ' .rating-field' ); |
| 280 | + $rateControl.stars( 'select', rating.userrating ); |
| 281 | + } |
| 282 | + } |
| 283 | + // if the rating is more than 5 revisions old, mark it as stale |
| 284 | + if ( typeof data.query.articleassessment[0].stale != 'undefined' ) { |
| 285 | + // add the stale star class to each on star |
| 286 | + $( '.ui-stars-star-on' ) |
| 287 | + .addClass( 'ui-stars-star-stale' ); |
| 288 | + // add the stale message |
| 289 | + var msg = $.ArticleAssessment.fn.getMsg( 'articleassessment-stalemessage-norevisioncount' ); |
| 290 | + $.ArticleAssessment.fn.flashNotice( msg, { 'class': 'article-assessment-stale-msg' } ); |
| 291 | + } else { |
| 292 | + // if it's not a stale rating, we want to make the stars blue |
| 293 | + $( '.ui-stars-star-on' ).addClass( 'ui-stars-star-rated' ); |
| 294 | + } |
| 295 | + } |
| 296 | + // initialize the ratings |
| 297 | + $( '.article-assessment-rating-field-value' ).each( function() { |
| 298 | + $( this ) |
| 299 | + .css( { |
| 300 | + 'width': 120 - ( 120 * ( parseFloat( $( this ).text() ) / 5 ) ) + 'px' |
| 301 | + } ) |
| 302 | + } ); |
| 303 | + }, |
| 304 | + 'submitRating': function() { |
| 305 | + var config = $( '#article-assessment' ).data( 'articleAssessment-context' ).config; |
| 306 | + // clear out the stale message |
| 307 | + $.ArticleAssessment.fn.flashNotice( ); |
| 308 | + |
| 309 | + // lock the star inputs & submit |
| 310 | + $( '.rating-field' ).stars( 'disable' ); |
| 311 | + $( '#article-assessment input' ).attr( 'disabled', 'disabled' ); |
| 312 | + // get our results for submitting |
| 313 | + var results = {}; |
| 314 | + $( '.rating-field input' ).each( function() { |
| 315 | + // expects the hidden inputs to have names like 'rating[field-name]' which we use to |
| 316 | + // be transparent about what values we're sending to the server |
| 317 | + var fieldName = $( this ).attr( 'name' ).match( /\[([a-zA-Z0-9\-]*)\]/ )[1]; |
| 318 | + results[ fieldName ] = $( this ).val(); |
| 319 | + } ); |
| 320 | + var request = $.ajax( { |
| 321 | + url: wgScriptPath + '/api.php', |
| 322 | + type: 'POST', |
| 323 | + data: { |
| 324 | + 'action': 'articleassessment', |
| 325 | + 'revid': config.revID, |
| 326 | + 'pageid': config.pageID, |
| 327 | + 'r1' : results['wellsourced'], |
| 328 | + 'r2' : results['neutrality'], |
| 329 | + 'r3' : results['completeness'], |
| 330 | + 'r4' : results['readability'], |
| 331 | + 'anontoken': config.userID, |
| 332 | + 'format': 'json' |
| 333 | + }, |
| 334 | + dataType: 'json', |
| 335 | + success: $.ArticleAssessment.fn.afterSubmitRating, |
| 336 | + error: function( XMLHttpRequest, textStatus, errorThrown ) { |
| 337 | + $.ArticleAssessment.fn.flashNotice( $.ArticleAssessment.fn.getMsg( 'articleassessment-error' ), |
| 338 | + { 'class': 'article-assessment-error-msg' } ); |
| 339 | + } |
| 340 | + } ); |
| 341 | + }, |
| 342 | + 'afterSubmitRating': function ( data ) { |
| 343 | + // update the ratings |
| 344 | + $.ArticleAssessment.fn.getRatingData(); |
| 345 | + // set the stars to rated status |
| 346 | + $( '.ui-stars-star-on' ).addClass( 'ui-stars-star-rated' ); |
| 347 | + // unlock the stars & submit |
| 348 | + $( '.rating-field' ).stars( 'enable' ); |
| 349 | + $( '#article-assessment input:disabled' ).removeAttr( 'disabled' ); |
| 350 | + // update the results |
| 351 | + |
| 352 | + // show the results |
| 353 | + $.ArticleAssessment.fn.showRatings(); |
| 354 | + // say thank you |
| 355 | + $.ArticleAssessment.fn.flashNotice( $.ArticleAssessment.fn.getMsg( 'articleassessment-thanks' ), |
| 356 | + { 'class': 'article-assessment-success-msg' } ); |
| 357 | + }, |
| 358 | + // places a message on the interface |
| 359 | + 'flashNotice': function( text, options ) { |
| 360 | + if ( arguments.length == 0 ) { |
| 361 | + // clear existing messages, but don't add a new one |
| 362 | + $( '#article-assessment .article-assessment-flash' ).remove(); |
| 363 | + } else { |
| 364 | + // clear and add a new message |
| 365 | + $( '#article-assessment .article-assessment-flash' ).remove(); |
| 366 | + var className = options['class']; |
| 367 | + // create our new message |
| 368 | + $msg = $( '<span />' ) |
| 369 | + .addClass( 'article-assessment-flash' ) |
| 370 | + .html( text ); |
| 371 | + // if the class option was passed, add it |
| 372 | + if( options['class'] ) { |
| 373 | + $msg.addClass( options['class'] ); |
| 374 | + } |
| 375 | + // place our new message on the page |
| 376 | + $( '#article-assessment .article-assessment-submit' ) |
| 377 | + .append( $msg ); |
| 378 | + } |
| 379 | + }, |
| 380 | + 'showFeedback': function() { |
| 381 | + $.ArticleAssessment.fn.withJUI( function() { |
| 382 | + var $dialogDiv = $( '#article-assessment-dialog' ); |
| 383 | + if ( $dialogDiv.size() == 0 ) { |
| 384 | + $dialogDiv = $( '<div id="article-assessment-dialog" class="loading" />' ) |
| 385 | + .dialog( { |
| 386 | + width: 600, |
| 387 | + height: 400, |
| 388 | + bgiframe: true, |
| 389 | + autoOpen: true, |
| 390 | + modal: true, |
| 391 | + title: $.ArticleAssessment.fn.getMsg( 'articleassessment-survey-title' ), |
| 392 | + close: function() { |
| 393 | + $( this ) |
| 394 | + .find( '.article-assessment-success-msg, .article-assessment-error-msg' ) |
| 395 | + .remove() |
| 396 | + .end() |
| 397 | + .find( 'form' ) |
| 398 | + .show(); |
| 399 | + } |
| 400 | + } ); |
| 401 | + $dialogDiv.load( |
| 402 | + wgScript + '?title=Special:SimpleSurvey&survey=articlerating&raw=1', |
| 403 | + function() { |
| 404 | + $( this ).find( 'form' ).bind( 'submit', $.ArticleAssessment.fn.submitFeedback ); |
| 405 | + $( this ).removeClass( 'loading' ); |
| 406 | + } |
| 407 | + ); |
| 408 | + } |
| 409 | + $dialogDiv.dialog( 'open' ); |
| 410 | + } ); |
| 411 | + return false; |
| 412 | + }, |
| 413 | + 'submitFeedback': function() { |
| 414 | + var $dialogDiv = $( '#article-assessment-dialog' ); |
| 415 | + $dialogDiv |
| 416 | + .find( 'form' ) |
| 417 | + .hide() |
| 418 | + .end() |
| 419 | + .addClass( 'loading' ); |
| 420 | + |
| 421 | + // Submit straight to the special page. Yes, this is a dirty dirty hack |
| 422 | + // Build request from form data |
| 423 | + var formData = {}; |
| 424 | + $dialogDiv.find( 'input' ).each( function() { |
| 425 | + var name = $( this ).attr( 'name' ); |
| 426 | + if ( name !== '' ) { |
| 427 | + if ( name.substr( -2 ) == '[]' ) { |
| 428 | + var trimmedName = name.substr( 0, name.length - 2 ); |
| 429 | + if ( typeof formData[trimmedName] == 'undefined' ) { |
| 430 | + formData[trimmedName] = []; |
| 431 | + } |
| 432 | + formData[trimmedName].push( $( this ).val() ); |
| 433 | + } else { |
| 434 | + formData[name] = $( this ).val(); |
| 435 | + } |
| 436 | + } |
| 437 | + } ); |
| 438 | + formData.title = 'Special:SimpleSurvey'; |
| 439 | + |
| 440 | + $.ajax( { |
| 441 | + url: wgScript, |
| 442 | + type: 'POST', |
| 443 | + data: formData, |
| 444 | + dataType: 'html', |
| 445 | + success: function( data ) { |
| 446 | + // This is an evil screenscraping method to determine whether |
| 447 | + // the submission was successful |
| 448 | + var success = $( data ).find( '.simplesurvey-success' ).size() > 0; |
| 449 | + // TODO: Style success-msg, error-msg |
| 450 | + $( '<div />' ) |
| 451 | + .addClass( success ? 'article-assessment-success-msg' : 'article-assessment-error-msg' ) |
| 452 | + .text( $.ArticleAssessment.fn.getMsg( success? 'articleassessment-survey-thanks' : 'articleassessment-error' ) ) |
| 453 | + .appendTo( $dialogDiv ); |
| 454 | + $dialogDiv.removeClass( 'loading' ); |
| 455 | + if ( success ) { |
| 456 | + // Hide the dialog link |
| 457 | + $( '#article-assessment .article-assessment-rate-feedback' ).hide(); |
| 458 | + } |
| 459 | + }, |
| 460 | + error: function( XMLHttpRequest, textStatus, errorThrown ) { |
| 461 | + // TODO: Duplicates code, factor out, maybe |
| 462 | + $( '<div />' ) |
| 463 | + .addClass( 'article-assessment-error-msg' ) |
| 464 | + .text( $.ArticleAssessment.fn.getMsg( 'articleassessment-error' ) ) |
| 465 | + .appendTo( $dialogDiv ); |
| 466 | + $dialogDiv.removeClass( 'loading' ); |
| 467 | + } |
| 468 | + } ); |
| 469 | + return false; |
| 470 | + }, |
| 471 | + 'addMessages': function( messages ) { |
| 472 | + for ( var key in messages ) { |
| 473 | + $.ArticleAssessment.messages[key] = messages[key]; |
| 474 | + } |
| 475 | + }, |
| 476 | + /** |
| 477 | + * Get a message |
| 478 | + * FIXME: Parameter expansion is broken in all sorts of edge cases |
| 479 | + */ |
| 480 | + 'getMsg': function( key, args ) { |
| 481 | + if ( !( key in $.ArticleAssessment.messages ) ) { |
| 482 | + return '[' + key + ']'; |
| 483 | + } |
| 484 | + var msg = $.ArticleAssessment.messages[key]; |
| 485 | + if ( typeof args == 'object' || typeof args == 'array' ) { |
| 486 | + for ( var i = 0; i < args.length; i++ ) { |
| 487 | + msg = msg.replace( new RegExp( '\\$' + ( parseInt( i ) + 1 ), 'g' ), args[i] ); |
| 488 | + } |
| 489 | + } else if ( typeof args == 'string' || typeof args == 'number' ) { |
| 490 | + msg = msg.replace( /\$1/g, args ); |
| 491 | + } |
| 492 | + return msg; |
| 493 | + }, |
| 494 | + 'withJUI': function( callback ) { |
| 495 | + if ( typeof $.ui == 'undefined' ) { |
| 496 | + $.getScript( wgArticleAssessmentJUIPath, callback ); |
| 497 | + } else { |
| 498 | + callback(); |
| 499 | + } |
| 500 | + } |
| 501 | + } |
| 502 | + }; |
| 503 | + $( document ).ready( function () { |
| 504 | + $.ArticleAssessment.fn.init( ); |
| 505 | + } ); //document ready |
| 506 | +} )( jQuery ); |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 507 | + native |
Index: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.stars.js |
— | — | @@ -0,0 +1,302 @@ |
| 2 | +/*! |
| 3 | + * jQuery Stars v1 |
| 4 | + * adapted by Adam Miller (acm6603@gmail.com) |
| 5 | + * |
| 6 | + * Adapted from jQuery UI Stars v3.0.1 |
| 7 | + * Marek "Orkan" Zajac (orkans@gmail.com) |
| 8 | + * http://plugins.jquery.com/project/Star_Rating_widget |
| 9 | + * |
| 10 | + */ |
| 11 | +(function($) { |
| 12 | +$.stars = { |
| 13 | + defaults : { |
| 14 | + inputType: 'radio', // [radio|select] |
| 15 | + split: 0, // decrease number of stars by splitting each star into pieces [2|3|4|...] |
| 16 | + disabled: false, // set to [true] to make the stars initially disabled |
| 17 | + cancelTitle: 'Cancel Rating', |
| 18 | + cancelValue: 0, // default value of Cancel btn. |
| 19 | + cancelShow: true, |
| 20 | + disableValue: true, // set to [false] to not disable the hidden input when Cancel btn is clicked, so the value will present in POST data. |
| 21 | + oneVoteOnly: false, |
| 22 | + showTitles: false, |
| 23 | + captionEl: null, // jQuery object - target for text captions |
| 24 | + callback: null, // function(ui, type, value, event) |
| 25 | + /* |
| 26 | + * CSS classes |
| 27 | + */ |
| 28 | + starWidth: 16, // width of the star image |
| 29 | + cancelClass: 'ui-stars-cancel', |
| 30 | + starClass: 'ui-stars-star', |
| 31 | + starOnClass: 'ui-stars-star-on', |
| 32 | + starHoverClass: 'ui-stars-star-hover', |
| 33 | + starDisabledClass: 'ui-stars-star-disabled', |
| 34 | + cancelHoverClass: 'ui-stars-cancel-hover', |
| 35 | + cancelDisabledClass: 'ui-stars-cancel-disabled' |
| 36 | + }, |
| 37 | + create: function( ) { |
| 38 | + var self = this, o = this.options, starId = 0; |
| 39 | + this.element.data('former.stars', this.element.html()); |
| 40 | + o.isSelect = o.inputType == 'select'; |
| 41 | + this.$form = $(this.element).closest('form'); |
| 42 | + this.$selec = o.isSelect ? $('select', this.element) : null; |
| 43 | + this.$rboxs = o.isSelect ? $('option', this.$selec) : $(':radio', this.element); |
| 44 | + /* |
| 45 | + * Map all inputs from $rboxs array to Stars elements |
| 46 | + */ |
| 47 | + this.$stars = this.$rboxs.map(function(i) |
| 48 | + { |
| 49 | + var el = { |
| 50 | + value: this.value, |
| 51 | + title: (o.isSelect ? this.text : this.title) || this.value, |
| 52 | + isDefault: (o.isSelect && this.defaultSelected) || this.defaultChecked |
| 53 | + }; |
| 54 | + if(i==0) { |
| 55 | + o.split = typeof o.split != 'number' ? 0 : o.split; |
| 56 | + o.val2id = []; |
| 57 | + o.id2val = []; |
| 58 | + o.id2title = []; |
| 59 | + o.name = o.isSelect ? self.$selec.get(0).name : this.name; |
| 60 | + o.disabled = o.disabled || (o.isSelect ? $(self.$selec).attr('disabled') : $(this).attr('disabled')); |
| 61 | + } |
| 62 | + /* |
| 63 | + * Consider it as a Cancel button? |
| 64 | + */ |
| 65 | + if(el.value == o.cancelValue) { |
| 66 | + o.cancelTitle = el.title; |
| 67 | + return null; |
| 68 | + } |
| 69 | + o.val2id[el.value] = starId; |
| 70 | + o.id2val[starId] = el.value; |
| 71 | + o.id2title[starId] = el.title; |
| 72 | + if(el.isDefault) { |
| 73 | + o.checked = starId; |
| 74 | + o.value = o.defaultValue = el.value; |
| 75 | + o.title = el.title; |
| 76 | + } |
| 77 | + var $s = $('<div/>').addClass(o.starClass); |
| 78 | + var $a = $('<a/>').attr('title', o.showTitles ? el.title : '').text(el.value); |
| 79 | + /* |
| 80 | + * Prepare division settings |
| 81 | + */ |
| 82 | + if(o.split) { |
| 83 | + var oddeven = (starId % o.split); |
| 84 | + var stwidth = Math.floor(o.starWidth / o.split); |
| 85 | + $s.width(stwidth); |
| 86 | + $a.css('margin-left', '-' + (oddeven * stwidth) + 'px'); |
| 87 | + } |
| 88 | + starId++; |
| 89 | + return $s.append($a).get(0); |
| 90 | + }); |
| 91 | + /* |
| 92 | + * How many Stars? |
| 93 | + */ |
| 94 | + o.items = starId; |
| 95 | + /* |
| 96 | + * Remove old content |
| 97 | + */ |
| 98 | + o.isSelect ? this.$selec.remove() : this.$rboxs.remove(); |
| 99 | + /* |
| 100 | + * Append Stars interface |
| 101 | + */ |
| 102 | + this.$cancel = $('<div/>').addClass(o.cancelClass).append( $('<a/>').attr('title', o.showTitles ? o.cancelTitle : '').text(o.cancelValue) ); |
| 103 | + o.cancelShow &= !o.disabled && !o.oneVoteOnly; |
| 104 | + o.cancelShow && this.element.append(this.$cancel); |
| 105 | + this.element.append(this.$stars); |
| 106 | + /* |
| 107 | + * Initial selection |
| 108 | + */ |
| 109 | + if(o.checked === undefined) { |
| 110 | + o.checked = -1; |
| 111 | + o.value = o.defaultValue = o.cancelValue; |
| 112 | + o.title = ''; |
| 113 | + } |
| 114 | + /* |
| 115 | + * The only FORM element, that has been linked to the stars control. The value field is updated on each Star click event |
| 116 | + */ |
| 117 | + this.$value = $("<input type='hidden' name='"+o.name+"' value='"+o.value+"' />"); |
| 118 | + this.element.append(this.$value); |
| 119 | + /* |
| 120 | + * Attach stars event handler |
| 121 | + */ |
| 122 | + this.$stars.bind('click.stars', function(e) { |
| 123 | + if(!o.forceSelect && o.disabled) return false; |
| 124 | + var i = self.$stars.index(this); |
| 125 | + o.checked = i; |
| 126 | + o.value = o.id2val[i]; |
| 127 | + o.title = o.id2title[i]; |
| 128 | + self.$value.attr({disabled: o.disabled ? 'disabled' : '', value: o.value}); |
| 129 | + fillTo(i, false); |
| 130 | + self.disableCancel(); |
| 131 | + !o.forceSelect && self.callback(e, 'star'); |
| 132 | + }) |
| 133 | + .bind('mouseover.stars', function() { |
| 134 | + if(o.disabled) return false; |
| 135 | + var i = self.$stars.index(this); |
| 136 | + fillTo(i, true); |
| 137 | + }) |
| 138 | + .bind('mouseout.stars', function() { |
| 139 | + if(o.disabled) return false; |
| 140 | + fillTo(self.options.checked, false); |
| 141 | + }); |
| 142 | + /* |
| 143 | + * Attach cancel event handler |
| 144 | + */ |
| 145 | + this.$cancel.bind('click.stars', function(e) { |
| 146 | + if(!o.forceSelect && (o.disabled || o.value == o.cancelValue)) return false; |
| 147 | + o.checked = -1; |
| 148 | + o.value = o.cancelValue; |
| 149 | + o.title = ''; |
| 150 | + self.$value.val(o.value); |
| 151 | + o.disableValue && self.$value.attr({disabled: 'disabled'}); |
| 152 | + fillNone(); |
| 153 | + self.disableCancel(); |
| 154 | + !o.forceSelect && self.callback(e, 'cancel'); |
| 155 | + }) |
| 156 | + .bind('mouseover.stars', function() { |
| 157 | + if(self.disableCancel()) return false; |
| 158 | + self.$cancel.addClass(o.cancelHoverClass); |
| 159 | + fillNone(); |
| 160 | + self.showCap(o.cancelTitle); |
| 161 | + }) |
| 162 | + .bind('mouseout.stars', function() { |
| 163 | + if(self.disableCancel()) return false; |
| 164 | + self.$cancel.removeClass(o.cancelHoverClass); |
| 165 | + self.$stars.triggerHandler('mouseout.stars'); |
| 166 | + }); |
| 167 | + /* |
| 168 | + * Attach onReset event handler to the parent FORM |
| 169 | + */ |
| 170 | + this.$form.bind('reset.stars', function(){ |
| 171 | + !o.disabled && self.select(o.defaultValue); |
| 172 | + }); |
| 173 | + /* |
| 174 | + * Clean up to avoid memory leaks in certain versions of IE 6 |
| 175 | + */ |
| 176 | + $(window).unload(function(){ |
| 177 | + self.$cancel.unbind('.stars'); |
| 178 | + self.$stars.unbind('.stars'); |
| 179 | + self.$form.unbind('.stars'); |
| 180 | + self.$selec = self.$rboxs = self.$stars = self.$value = self.$cancel = self.$form = null; |
| 181 | + }); |
| 182 | + /* |
| 183 | + * Star selection helpers |
| 184 | + */ |
| 185 | + function fillTo(index, hover) { |
| 186 | + if(index != -1) { |
| 187 | + var addClass = hover ? o.starHoverClass : o.starOnClass; |
| 188 | + var remClass = hover ? o.starOnClass : o.starHoverClass; |
| 189 | + self.$stars.eq(index).prevAll('.' + o.starClass).andSelf().removeClass(remClass).addClass(addClass); |
| 190 | + self.$stars.eq(index).nextAll('.' + o.starClass).removeClass(o.starHoverClass + ' ' + o.starOnClass); |
| 191 | + self.showCap(o.id2title[index]); |
| 192 | + } |
| 193 | + else fillNone(); |
| 194 | + }; |
| 195 | + function fillNone() { |
| 196 | + self.$stars.removeClass(o.starOnClass + ' ' + o.starHoverClass); |
| 197 | + self.showCap(''); |
| 198 | + }; |
| 199 | + /* |
| 200 | + * Finally, set up the Stars |
| 201 | + */ |
| 202 | + this.select( o.value ); |
| 203 | + o.disabled && this.disable(); |
| 204 | + }, |
| 205 | + /* |
| 206 | + * Private functions |
| 207 | + */ |
| 208 | + disableCancel: function() { |
| 209 | + var o = this.options, disabled = o.disabled || o.oneVoteOnly || (o.value == o.cancelValue); |
| 210 | + if(disabled) this.$cancel.removeClass(o.cancelHoverClass).addClass(o.cancelDisabledClass); |
| 211 | + else this.$cancel.removeClass(o.cancelDisabledClass); |
| 212 | + this.$cancel.css('opacity', disabled ? 0.5 : 1); |
| 213 | + return disabled; |
| 214 | + }, |
| 215 | + disableAll: function() { |
| 216 | + var o = this.options; |
| 217 | + this.disableCancel(); |
| 218 | + if(o.disabled) this.$stars.filter('div').addClass(o.starDisabledClass); |
| 219 | + else this.$stars.filter('div').removeClass(o.starDisabledClass); |
| 220 | + }, |
| 221 | + showCap: function(s) { |
| 222 | + var o = this.options; |
| 223 | + if(o.captionEl) o.captionEl.text(s); |
| 224 | + }, |
| 225 | + /* |
| 226 | + * Public functions |
| 227 | + */ |
| 228 | + value: function() { |
| 229 | + return this.options.value; |
| 230 | + }, |
| 231 | + select: function( val ) { |
| 232 | + var o = this.options, e = (val == o.cancelValue) ? this.$cancel : this.$stars.eq(o.val2id[val]); |
| 233 | + o.forceSelect = true; |
| 234 | + e.triggerHandler('click.stars'); |
| 235 | + o.forceSelect = false; |
| 236 | + }, |
| 237 | + selectID: function(id) { |
| 238 | + var o = this.options, e = (id == -1) ? this.$cancel : this.$stars.eq(id); |
| 239 | + o.forceSelect = true; |
| 240 | + e.triggerHandler('click.stars'); |
| 241 | + o.forceSelect = false; |
| 242 | + }, |
| 243 | + enable: function() { |
| 244 | + this.options.disabled = false; |
| 245 | + this.disableAll(); |
| 246 | + }, |
| 247 | + disable: function() { |
| 248 | + this.options.disabled = true; |
| 249 | + this.disableAll(); |
| 250 | + }, |
| 251 | + destroy: function() { |
| 252 | + this.$form.unbind('.stars'); |
| 253 | + this.$cancel.unbind('.stars').remove(); |
| 254 | + this.$stars.unbind('.stars').remove(); |
| 255 | + this.$value.remove(); |
| 256 | + this.element.unbind('.stars').html(this.element.data('former.stars')).removeData('stars'); |
| 257 | + return this; |
| 258 | + }, |
| 259 | + callback: function(e, type) { |
| 260 | + var o = this.options; |
| 261 | + o.callback && o.callback(this, type, o.value, e); |
| 262 | + o.oneVoteOnly && !o.disabled && this.disable(); |
| 263 | + } |
| 264 | +} |
| 265 | +$.fn.stars = function ( ) { |
| 266 | + // convert the arguments to an array |
| 267 | + var args = Array.prototype.slice.call(arguments); |
| 268 | + // default value to return -- overwritten by api calls |
| 269 | + var out = $( this ); |
| 270 | + $( this ).each( function() { |
| 271 | + // get the context if it's already been initialized |
| 272 | + var context = $( this ).data( 'stars-context' ); |
| 273 | + if ( typeof context == 'undefined' || context == null ) { |
| 274 | + // setup the context if it hasn't been yet |
| 275 | + context = $.extend( {}, { |
| 276 | + element: $( this ), |
| 277 | + options: $.stars.defaults |
| 278 | + }, $.stars ); |
| 279 | + } |
| 280 | + // Handle various calling styles |
| 281 | + if ( args.length > 0 ) { |
| 282 | + if ( typeof args[0] == 'object' ) { |
| 283 | + // merge the passed options into defaults |
| 284 | + context.options = $.extend( {}, context.options, args[0] ); |
| 285 | + // initialize |
| 286 | + $.stars.create.call( context ); |
| 287 | + } else if ( typeof args[0] == 'string' ) { |
| 288 | + // API call |
| 289 | + var funcName = args[0]; |
| 290 | + // call the function, and if it returns something, store the output in our return var |
| 291 | + out = $.stars[funcName].call( context, args.slice(1) ) || out; |
| 292 | + } |
| 293 | + } else { |
| 294 | + // initialize with the defaults |
| 295 | + $.stars.create.call( context ); |
| 296 | + } |
| 297 | + // save our context, bay-bee |
| 298 | + $( this ).data( 'stars-context', context ); |
| 299 | + } ); |
| 300 | + |
| 301 | + return out; |
| 302 | +}; |
| 303 | +} )( jQuery ); |
Property changes on: branches/wmf/1.16wmf4/extensions/ArticleAssessmentPilot/js/jquery.stars.js |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 304 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/Surveys.php |
— | — | @@ -0,0 +1,88 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +$wgSimpleSurveyRedirectURL = ""; |
| 5 | + |
| 6 | +$wgValidSurveys[] = 'vitals-07-2010'; |
| 7 | + |
| 8 | +$wgPrefSwitchSurveys['vitals-07-2010'] = array( |
| 9 | + 'submit-msg' => 'vitals-07-2010-submit', |
| 10 | + 'intro-msg' => 'simple-survey-intro-vitals-07-2010', |
| 11 | + 'updatable' => false, |
| 12 | + 'questions' => array( |
| 13 | + 'use' => array( |
| 14 | + 'question' => 'vitals-07-2010-question-use', |
| 15 | + 'type' => 'select', |
| 16 | + 'answers' => array( |
| 17 | + 'blank' => 'vitals-07-2010-blank', |
| 18 | + 'daily' => 'vitals-07-2010-answer-daily', |
| 19 | + 'weekly' => 'vitals-07-2010-answer-weekly', |
| 20 | + 'monthly' => 'vitals-07-2010-answer-monthly', |
| 21 | + 'rarely' => 'vitals-07-2010-answer-rarely', |
| 22 | + 'first' => 'vitals-07-2010-answer-firsttime', |
| 23 | + ), |
| 24 | + ), |
| 25 | + 'edit' => array( |
| 26 | + 'question' => 'vitals-07-2010-question-edit', |
| 27 | + 'type' => 'select', |
| 28 | + 'answers' => array( |
| 29 | + 'blank' => 'vitals-07-2010-blank', |
| 30 | + 'daily' => 'vitals-07-2010-answer-y-daily', |
| 31 | + 'weekly' => 'vitals-07-2010-answer-y-weekly', |
| 32 | + 'monthly' => 'vitals-07-2010-answer-y-monthly', |
| 33 | + 'rarely' => 'vitals-07-2010-answer-y-rarely', |
| 34 | + 'never' => 'vitals-07-2010-answer-n-never', |
| 35 | + 'dunno' => 'vitals-07-2010-answer-dunno-edit', |
| 36 | + ), |
| 37 | + ), |
| 38 | + 'nonprofit' => array( |
| 39 | + 'question' => 'vitals-07-2010-question-nonprofit', |
| 40 | + 'type' => 'select', |
| 41 | + 'answers' => array( |
| 42 | + 'blank' => 'vitals-07-2010-blank', |
| 43 | + 'knew' => 'vitals-07-2010-answer-nonprof-knew', |
| 44 | + 'business' => 'vitals-07-2010-answer-nonprof-business', |
| 45 | + 'nothink' => 'vitals-07-2010-answer-nonprof-think', |
| 46 | + ), |
| 47 | + ), |
| 48 | + 'wikimediafoundation' => array( |
| 49 | + 'question' => 'vitals-07-2010-question-wikimedia', |
| 50 | + 'type' => 'select', |
| 51 | + 'answers' => array( |
| 52 | + 'blank' => 'vitals-07-2010-blank', |
| 53 | + 'notknow' => 'vitals-07-2010-answer-never-heard', |
| 54 | + 'exists' => 'vitals-07-2010-answer-heard-nothing', |
| 55 | + 'hosted' => 'vitals-07-2010-answer-hosted', |
| 56 | + 'familiar' => 'vitals-07-2010-answer-know', |
| 57 | + ), |
| 58 | + ), |
| 59 | + 'computerexp' => array( |
| 60 | + 'question' => 'vitals-07-2010-question-computerexp', |
| 61 | + 'type' => 'select', |
| 62 | + 'answers' => array( |
| 63 | + 'blank' => 'vitals-07-2010-blank', |
| 64 | + 'beginner' => 'vitals-07-2010-answer-beginner', |
| 65 | + 'one' => 'vitals-07-2010-answer-one-lang', |
| 66 | + 'many' => 'vitals-07-2010-answer-many-lang', |
| 67 | + 'none' => 'vitals-07-2010-answer-no-lang', |
| 68 | + ), |
| 69 | + ), |
| 70 | + 'age' => array( |
| 71 | + 'question' => 'vitals-07-2010-question-age', |
| 72 | + 'type' => 'smallinput', |
| 73 | + ), |
| 74 | + 'gender' => array( |
| 75 | + 'question' => 'vitals-07-2010-question-gender', |
| 76 | + 'type' => 'select', |
| 77 | + 'answers' => array( |
| 78 | + 'blank' => 'vitals-07-2010-blank', |
| 79 | + 'm' => 'vitals-07-2010-answer-male', |
| 80 | + 'f' => 'vitals-07-2010-answer-female', |
| 81 | + 'o' => 'vitals-07-2010-answer-other', |
| 82 | + ), |
| 83 | + ), |
| 84 | + 'story' => array( |
| 85 | + 'question' => 'vitals-07-2010-question-story', |
| 86 | + 'type' => 'text', |
| 87 | + ), |
| 88 | + ), |
| 89 | +); |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/Surveys.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 90 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.classes.php |
— | — | @@ -0,0 +1,106 @@ |
| 2 | +<?php |
| 3 | +class SimpleSurvey extends PrefSwitchSurvey { |
| 4 | + // Correlation between names of field types and implementation classes |
| 5 | + /* Static Functions */ |
| 6 | + |
| 7 | + /* update schema*/ |
| 8 | + public static function schema( ) { |
| 9 | + global $wgExtNewTables; |
| 10 | + |
| 11 | + $wgExtNewTables[] = array( 'prefswitch_survey', |
| 12 | + dirname( dirname( __FILE__ ) ) . "/UsabilityInitiative/PrefSwitch/PrefSwitch.sql" |
| 13 | + ); |
| 14 | + |
| 15 | + return true; |
| 16 | + } |
| 17 | + |
| 18 | + /** |
| 19 | + * creates a random token |
| 20 | + * @return a random token |
| 21 | + */ |
| 22 | + public static function generateRandomCookieID() { |
| 23 | + global $wgUser; |
| 24 | + return wfGenerateToken( array( $wgUser, time() ) ); |
| 25 | + } |
| 26 | + |
| 27 | + |
| 28 | + /** |
| 29 | + * Render the HTML for a survey. |
| 30 | + * @param $name string Survey name |
| 31 | + * @param $questions array Array containing question data |
| 32 | + * @param $loadFromDB bool Load previous survey data from the database |
| 33 | + * @return string HTML |
| 34 | + */ |
| 35 | + public static function render( $questions ) { |
| 36 | + global $wgUser; |
| 37 | + |
| 38 | + $html = Xml::openElement( 'dl' ); |
| 39 | + foreach ( $questions as $field => $config ) { |
| 40 | + $answer = null; |
| 41 | + $answerData = null; |
| 42 | + $invisible = false; |
| 43 | + if ( isset( $config['visibility'] ) && $config['visibility'] == 'hidden' ) { |
| 44 | + $invisible = true; |
| 45 | + } |
| 46 | + if ( $invisible ) { |
| 47 | + $html .= Xml::openElement( 'div', array( "style" => "display:none;" ) ); |
| 48 | + } |
| 49 | + $html .= call_user_func( array( self::$fieldTypes[$config['type']], 'render' ), |
| 50 | + $field, $config, $answer, $answerData |
| 51 | + ); |
| 52 | + if ( $invisible ) { |
| 53 | + $html .= Xml::closeElement( 'div' ); |
| 54 | + } |
| 55 | + } |
| 56 | + $html .= Xml::closeElement( 'dl' ); |
| 57 | + return $html; |
| 58 | + } |
| 59 | + |
| 60 | + /** |
| 61 | + * Save a survey to the database |
| 62 | + * @param $name string Survey name |
| 63 | + * @param $survey array Survey configuration data |
| 64 | + */ |
| 65 | + public static function save( $name, $survey ) { |
| 66 | + global $wgRequest, $wgUser; |
| 67 | + $dbw = wfGetDb( DB_MASTER ); |
| 68 | + $now = $dbw->timestamp(); |
| 69 | + /*$cookieID = $wgRequest->getCookie( "vitals-survey" ); |
| 70 | + if ( $cookieID == null ) { |
| 71 | + $cookieID = self::generateRandomCookieID(); |
| 72 | + $wgRequest->response()->setcookie( "vitals-survey", $cookieID ); |
| 73 | + }*/ |
| 74 | + |
| 75 | + foreach ( $survey['questions'] as $question => $config ) { |
| 76 | + $dbw->insert( |
| 77 | + 'prefswitch_survey', |
| 78 | + array_merge( |
| 79 | + array( |
| 80 | + 'pss_user' => $wgUser->getId(), |
| 81 | + 'pss_user_text' => $wgUser->getName(), |
| 82 | + 'pss_timestamp' => $now, |
| 83 | + 'pss_name' => $name, |
| 84 | + 'pss_question' => $question, |
| 85 | + ), |
| 86 | + call_user_func( array( self::$fieldTypes[$config['type']], 'save' ), $question, $wgRequest ) |
| 87 | + ), |
| 88 | + __METHOD__ |
| 89 | + ); |
| 90 | + } |
| 91 | + |
| 92 | + // pseudoquestion, logged in? IP address? |
| 93 | + $dbw->insert( |
| 94 | + 'prefswitch_survey', |
| 95 | + array( |
| 96 | + 'pss_user' => $wgUser->getId(), |
| 97 | + 'pss_user_text' => $wgUser->getName(), |
| 98 | + 'pss_timestamp' => $now, |
| 99 | + 'pss_name' => $name, |
| 100 | + 'pss_question' => "logged_in", |
| 101 | + 'pss_answer' => $wgUser->isLoggedIn() ? "yes" : "no", |
| 102 | + 'pss_answer_data' => wfGetIP(), |
| 103 | + ), |
| 104 | + __METHOD__ |
| 105 | + ); |
| 106 | + } |
| 107 | +} |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.classes.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 108 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.i18n.php |
— | — | @@ -0,0 +1,62 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +$messages = array(); |
| 5 | + |
| 6 | +/** English |
| 7 | + * @author Nimish Gautam |
| 8 | + */ |
| 9 | +$messages['en'] = array( |
| 10 | + 'simplesurvey' => 'Take a quick survey', |
| 11 | + 'simple-survey-invalid' => 'That is not a valid survey at this time', |
| 12 | + 'simple-survey-back' => 'Go back', |
| 13 | + 'simple-survey-title' => 'Simple Survey', |
| 14 | + 'simple-survey-confirm' => 'Thanks! Your data has been submitted.', |
| 15 | + |
| 16 | + /*vitals 07 2010 */ |
| 17 | + 'simple-survey-intro-vitals-07-2010' => 'This is a quick survey to give us a better idea of who you are', |
| 18 | + 'vitals-07-2010-submit' => 'Submit', |
| 19 | + |
| 20 | + 'vitals-07-2010-question-use' => 'How often do you use Wikipedia?', |
| 21 | + 'vitals-07-2010-question-edit' => 'Do you edit Wikipedia?', |
| 22 | + 'vitals-07-2010-question-nonprofit' => 'Did you know Wikipedia is a non-profit project?', |
| 23 | + 'vitals-07-2010-question-wikimedia' => 'Which of these describes your knowledge of the Wikimedia Foundation, the organization that hosts Wikipedia and its sister projects such as Wiktionary and Wikiquote:', |
| 24 | + 'vitals-07-2010-question-age' => 'Please tell us your age', |
| 25 | + 'vitals-07-2010-question-programming' => 'Please tell us which one of these describes you:', |
| 26 | + 'vitals-07-2010-question-gender' => 'Please tell us your gender', |
| 27 | + 'vitals-07-2010-question-story' => 'We love hearing about ways Wikipedia has impacted your life! Please feel free to share any stories, explain any of your answers, or leave a comment for the Wikimedia Foundation here:', |
| 28 | + 'vitals-07-2010-question-computerexp' => "Which one of the following describes your computer experience?", |
| 29 | + |
| 30 | + 'vitals-07-2010-blank' => '', |
| 31 | + 'vitals-07-2010-answer-daily' => 'Daily', |
| 32 | + 'vitals-07-2010-answer-weekly' => 'Weekly', |
| 33 | + 'vitals-07-2010-answer-monthly' => 'Monthly', |
| 34 | + 'vitals-07-2010-answer-rarely' => 'less than monthly', |
| 35 | + 'vitals-07-2010-answer-firsttime' => 'This was my first time', |
| 36 | + 'vitals-07-2010-answer-never' => 'Never', |
| 37 | + |
| 38 | + 'vitals-07-2010-answer-y-daily' => 'Yes, daily', |
| 39 | + 'vitals-07-2010-answer-y-weekly' => 'Yes, weekly', |
| 40 | + 'vitals-07-2010-answer-y-monthly' => 'Yes, monthly', |
| 41 | + 'vitals-07-2010-answer-y-rarely' => 'Yes, but less than monthly', |
| 42 | + 'vitals-07-2010-answer-n-never' => 'No, never', |
| 43 | + 'vitals-07-2010-answer-dunno-edit' => "I didn't know you could edit", |
| 44 | + |
| 45 | + 'vitals-07-2010-answer-nonprof-knew' => "I knew it was a non-profit", |
| 46 | + 'vitals-07-2010-answer-nonprof-business' => "I assumed it was a for-profit business", |
| 47 | + 'vitals-07-2010-answer-nonprof-think' => "I've never thought about it", |
| 48 | + |
| 49 | + 'vitals-07-2010-answer-never-heard' => "I've never heard of it", |
| 50 | + 'vitals-07-2010-answer-heard-nothing' => "I guess I've heard of it, but don't know anything about it", |
| 51 | + 'vitals-07-2010-answer-hosted' => "I know that Wikipedia is hosted by the Wikimedia Foundation, but that's about it", |
| 52 | + 'vitals-07-2010-answer-know' => "I'm familiar with the Wikimedia Foundation", |
| 53 | + |
| 54 | + 'vitals-07-2010-answer-beginner' => "I am a beginner with at least one programming language (eg HTML, PHP, Java, C)", |
| 55 | + 'vitals-07-2010-answer-one-lang' => "I am comfortable with at least one programming language", |
| 56 | + 'vitals-07-2010-answer-many-lang' => "I am comfortable with many programming languages", |
| 57 | + 'vitals-07-2010-answer-no-lang' => "Programming? Not me!", |
| 58 | + |
| 59 | + 'vitals-07-2010-answer-male' => 'Male', |
| 60 | + 'vitals-07-2010-answer-female' => 'Female', |
| 61 | + 'vitals-07-2010-answer-other' => 'Other', |
| 62 | + ); |
| 63 | + |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 64 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/README |
— | — | @@ -0,0 +1,6 @@ |
| 2 | +# |
| 3 | +# THIS EXTENSION DEPENDS ON CODE THAT HAS BEEN MOVED TO A BRANCH, AND NO LONGER EXISTS IN TRUNK! |
| 4 | +# |
| 5 | +# TO SATISTFY THE DEPENDENCIES OF THIS CODE, YOU MUST GET THE UsabilityInitiative EXTENSION FROM ONE OF THE FOLLOWING: |
| 6 | +# /branches/REL1_16/extensions/UsabilityInitiative/ -- official release version |
| 7 | +# /branches/usability-initiative-1_16/ -- intermediate version with more recent patches, should be merged soon |
\ No newline at end of file |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/README |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 8 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.php |
— | — | @@ -0,0 +1,103 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +$dir = dirname( __FILE__ ) . '/'; |
| 5 | + |
| 6 | +// from prefswitch in usability initiative |
| 7 | +$prefswitchdir = dirname( dirname( __FILE__ ) ) . "/UsabilityInitiative/PrefSwitch"; |
| 8 | + |
| 9 | +// Use this to override the URL of ext.prefSwitch.{js,css} if needed |
| 10 | +$wgSimpleSurveyJSPath = null; |
| 11 | +$wgSimpleSurveyCSSPath = null; |
| 12 | + |
| 13 | +// Adds Autoload Classes |
| 14 | +$wgAutoloadClasses = array_merge( |
| 15 | + $wgAutoloadClasses, |
| 16 | + array( |
| 17 | + 'PrefSwitchSurvey' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 18 | + 'PrefSwitchSurveyField' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 19 | + 'PrefSwitchSurveyFieldSelect' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 20 | + 'PrefSwitchSurveyFieldRadios' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 21 | + 'PrefSwitchSurveyFieldChecks' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 22 | + 'PrefSwitchSurveyFieldBoolean' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 23 | + 'PrefSwitchSurveyFieldDimensions' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 24 | + 'PrefSwitchSurveyFieldText' => $prefswitchdir . '/PrefSwitch.classes.php', |
| 25 | + 'SimpleSurvey' => $dir . "SimpleSurvey.classes.php", |
| 26 | + 'SpecialSimpleSurvey' => $dir . 'SpecialSimpleSurvey.php', |
| 27 | + ) |
| 28 | +); |
| 29 | + |
| 30 | +// add special pages |
| 31 | +$wgSpecialPages['SimpleSurvey'] = 'SpecialSimpleSurvey'; |
| 32 | +$wgSpecialPageGroups['SimpleSurvey'] = 'wiki'; |
| 33 | +$wgExtensionMessagesFiles['SimpleSurvey'] = $dir . 'SimpleSurvey.i18n.php'; |
| 34 | + |
| 35 | + |
| 36 | +$wgExtensionCredits['other'][] = array( |
| 37 | + 'path' => __FILE__, |
| 38 | + 'name' => 'SimpleSurvey', |
| 39 | + 'author' => array( 'Nimish Gautam' ), |
| 40 | + 'version' => '0.1', |
| 41 | + 'url' => 'http://www.mediawiki.org/wiki/Extension:UsabilityInitiative', |
| 42 | +); |
| 43 | + |
| 44 | +// Register database operations |
| 45 | +$wgHooks['LoadExtensionSchemaUpdates'][] = 'SimpleSurvey::schema'; |
| 46 | + |
| 47 | +$wgValidSurveys = array(); |
| 48 | + |
| 49 | +// add surveys |
| 50 | +require_once( $dir . "Surveys.php" ); |
| 51 | + |
| 52 | +// Always include the browser stuff... |
| 53 | +foreach ( $wgPrefSwitchSurveys as &$survey ) { |
| 54 | + $survey['questions']['browser'] = array( |
| 55 | + 'question' => 'prefswitch-survey-question-browser', |
| 56 | + 'type' => 'select', |
| 57 | + 'answers' => array( |
| 58 | + 'ie5' => 'prefswitch-survey-answer-browser-ie5', |
| 59 | + 'ie6' => 'prefswitch-survey-answer-browser-ie6', |
| 60 | + 'ie7' => 'prefswitch-survey-answer-browser-ie7', |
| 61 | + 'ie8' => 'prefswitch-survey-answer-browser-ie8', |
| 62 | + 'ie9' => 'prefswitch-survey-answer-browser-ie9', |
| 63 | + 'ffb' => 'prefswitch-survey-answer-browser-ffb', |
| 64 | + 'ff1' => 'prefswitch-survey-answer-browser-ff1', |
| 65 | + 'ff2' => 'prefswitch-survey-answer-browser-ff2', |
| 66 | + 'ff3' => 'prefswitch-survey-answer-browser-ff3', |
| 67 | + 'cb' => 'prefswitch-survey-answer-browser-cb', |
| 68 | + 'cd' => 'prefswitch-survey-answer-browser-cd', |
| 69 | + 'c1' => 'prefswitch-survey-answer-browser-c1', |
| 70 | + 'c2' => 'prefswitch-survey-answer-browser-c2', |
| 71 | + 'c3' => 'prefswitch-survey-answer-browser-c3', |
| 72 | + 'c4' => 'prefswitch-survey-answer-browser-c4', |
| 73 | + 'c5' => 'prefswitch-survey-answer-browser-c5', |
| 74 | + 's3' => 'prefswitch-survey-answer-browser-s3', |
| 75 | + 's4' => 'prefswitch-survey-answer-browser-s4', |
| 76 | + 's5' => 'prefswitch-survey-answer-browser-s5', |
| 77 | + 'o9' => 'prefswitch-survey-answer-browser-o9', |
| 78 | + 'o9.5' => 'prefswitch-survey-answer-browser-o9.5', |
| 79 | + 'o10' => 'prefswitch-survey-answer-browser-o10', |
| 80 | + ), |
| 81 | + 'other' => 'prefswitch-survey-answer-browser-other', |
| 82 | + ); |
| 83 | + $survey['questions']['os'] = array( |
| 84 | + 'question' => 'prefswitch-survey-question-os', |
| 85 | + 'type' => 'select', |
| 86 | + 'answers' => array( |
| 87 | + 'windows' => 'prefswitch-survey-answer-os-windows', |
| 88 | + 'windowsmobile' => 'prefswitch-survey-answer-os-windowsmobile', |
| 89 | + 'macos' => 'prefswitch-survey-answer-os-macos', |
| 90 | + 'iphoneos' => 'prefswitch-survey-answer-os-iphoneos', |
| 91 | + 'ios' => 'prefswitch-survey-answer-os-ios', |
| 92 | + 'linux' => 'prefswitch-survey-answer-os-linux', |
| 93 | + ), |
| 94 | + 'other' => 'prefswitch-survey-answer-os-other', |
| 95 | + ); |
| 96 | + $survey['questions']['res'] = array( |
| 97 | + 'question' => 'prefswitch-survey-question-res', |
| 98 | + 'type' => 'dimensions', |
| 99 | + ); |
| 100 | +} |
| 101 | +unset( $survey ); |
| 102 | + |
| 103 | + |
| 104 | + |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SimpleSurvey.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 105 | + native |
Index: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SpecialSimpleSurvey.php |
— | — | @@ -0,0 +1,157 @@ |
| 2 | +<?php |
| 3 | +/** |
| 4 | + * Special:PrefSwitch |
| 5 | + * |
| 6 | + * @file |
| 7 | + * @ingroup Extensions |
| 8 | + */ |
| 9 | + |
| 10 | +class SpecialSimpleSurvey extends SpecialPage { |
| 11 | + |
| 12 | + /* Private Members */ |
| 13 | + |
| 14 | + private $origin = ''; |
| 15 | + private $originTitle = null; |
| 16 | + private $originQuery = ''; |
| 17 | + private $originLink = ''; |
| 18 | + private $originLinkUrl = ''; |
| 19 | + private $originFullUrl = ''; |
| 20 | + private $tokenToCheck = ''; |
| 21 | + |
| 22 | + /* Functions */ |
| 23 | + |
| 24 | + /** |
| 25 | + * Quick token matching wrapper for form processing |
| 26 | + */ |
| 27 | + public function checkToken() { |
| 28 | + global $wgRequest; |
| 29 | + $this->tokenToCheck = $_SESSION['wsSimpleSurveyToken']; |
| 30 | + if ( $this->tokenToCheck != "" && |
| 31 | + ( $wgRequest->getVal( 'token' ) == $this->tokenToCheck ) ) { |
| 32 | + return true; |
| 33 | + } else { |
| 34 | + return false; |
| 35 | + } |
| 36 | + } |
| 37 | + |
| 38 | + public function setToken() { |
| 39 | + $this->tokenToCheck = wfGenerateToken( array( $this, time() ) ); |
| 40 | + $_SESSION['wsSimpleSurveyToken'] = $this->tokenToCheck; |
| 41 | + } |
| 42 | + |
| 43 | + public function __construct() { |
| 44 | + parent::__construct( 'SimpleSurvey' ); |
| 45 | + wfLoadExtensionMessages( 'SimpleSurvey' ); |
| 46 | + } |
| 47 | + |
| 48 | + |
| 49 | + public function execute( $par ) { |
| 50 | + global $wgRequest, $wgOut, $wgUser, $wgPrefSwitchSurveys, $wgPrefSwitchStyleVersion, $wgValidSurveys, $wgSimpleSurveyRedirectURL; |
| 51 | + $this->setHeaders(); |
| 52 | + // Set page title |
| 53 | + $wgOut->setPageTitle( wfMsg( 'simple-survey-title' ) ); |
| 54 | + $surveyName = $wgRequest->getVal( "survey" ); |
| 55 | + |
| 56 | + if ( $wgRequest->wasPosted() ) { |
| 57 | + if ( $surveyName && in_array( $surveyName, $wgValidSurveys ) && $this->checkToken() ) { |
| 58 | + SimpleSurvey::save( $surveyName, $wgPrefSwitchSurveys[$surveyName] ); |
| 59 | + $wgOut->addHtml( '<strong class="simplesurvey-success">' . wfMsgHtml( 'simple-survey-confirm' ) . '</strong>' ); |
| 60 | + } |
| 61 | + // forward to new page |
| 62 | + if ( $wgSimpleSurveyRedirectURL ) { |
| 63 | + $wgOut->redirect( $wgSimpleSurveyRedirectURL ); |
| 64 | + } |
| 65 | + |
| 66 | + return; |
| 67 | + } |
| 68 | + |
| 69 | + $this->setToken(); |
| 70 | + // Get the origin from the request |
| 71 | + $par = $wgRequest->getVal( 'from', $par ); |
| 72 | + $this->originTitle = Title::newFromText( $par ); |
| 73 | + // $this->originTitle should never be Special:Userlogout |
| 74 | + if ( |
| 75 | + $this->originTitle && |
| 76 | + $this->originTitle->isSpecial( 'Userlogout' ) |
| 77 | + ) { |
| 78 | + $this->originTitle = null; |
| 79 | + } |
| 80 | + // Get some other useful information about the origin |
| 81 | + if ( $this->originTitle ) { |
| 82 | + $this->origin = $this->originTitle->getPrefixedDBKey(); |
| 83 | + $this->originQuery = $wgRequest->getVal( 'fromquery' ); |
| 84 | + $this->originLink = $wgUser->getSkin()->link( $this->originTitle, null, array(), $this->originQuery ); |
| 85 | + $this->originLinkUrl = $this->originTitle->getLinkUrl( $this->originQuery ); |
| 86 | + $this->originFullUrl = $this->originTitle->getFullUrl( $this->originQuery ); |
| 87 | + } |
| 88 | + |
| 89 | + // Begin output |
| 90 | + $this->setHeaders(); |
| 91 | + |
| 92 | + global $wgExtensionAssetsPath, $wgSimpleSurveyJSPath, $wgSimpleSurveyCSSPath; |
| 93 | + $script = Html::linkedScript( wfAppendQuery( $wgSimpleSurveyJSPath ? $wgSimpleSurveyJSPath : |
| 94 | + "$wgExtensionAssetsPath/UsabilityInitiative/PrefSwitch/modules/ext.prefSwitch.js", $wgPrefSwitchStyleVersion ) ); |
| 95 | + $wgOut->addScript( $script ); |
| 96 | + $wgOut->addExtensionStyle( wfAppendQuery( $wgSimpleSurveyCSSPath ? $wgSimpleSurveyCSSPath : |
| 97 | + "$wgExtensionAssetsPath/UsabilityInitiative/PrefSwitch/modules/ext.prefSwitch.css", $wgPrefSwitchStyleVersion ) ); |
| 98 | + |
| 99 | + // Handle various modes |
| 100 | + $renderedSurvey = $this->render( $wgRequest->getVal( "survey" ) ); |
| 101 | + |
| 102 | + $wgOut->addHtml( '<div class="plainlinks">' ); |
| 103 | + $wgOut->addHtml( $renderedSurvey ); |
| 104 | + $wgOut->addHtml( '</div>' ); |
| 105 | + |
| 106 | + // Handle raw mode |
| 107 | + // Only output the <form> and the <script> |
| 108 | + if ( $wgRequest->getBool( 'raw' ) ) { |
| 109 | + $wgOut->disable(); |
| 110 | + echo $renderedSurvey . $script; |
| 111 | + } |
| 112 | + } |
| 113 | + |
| 114 | + /* Private Functions */ |
| 115 | + |
| 116 | + private function render( $mode = null ) { |
| 117 | + global $wgUser, $wgOut, $wgPrefSwitchSurveys, $wgValidSurveys; |
| 118 | + // Make sure links will retain the origin |
| 119 | + $query = array( 'from' => $this->origin, 'fromquery' => $this->originQuery ); |
| 120 | + |
| 121 | + if ( !isset( $wgPrefSwitchSurveys[$mode] ) && !in_array( $mode, $wgValidSurveys ) ) { |
| 122 | + $wgOut->addWikiMsg( "simple-survey-invalid" ); |
| 123 | + if ( $this->originTitle ) { |
| 124 | + $wgOut->addHTML( wfMsg( "simple-survey-back", $this->originLink ) ); |
| 125 | + } |
| 126 | + return; |
| 127 | + } |
| 128 | + |
| 129 | + if ( isset( $wgPrefSwitchSurveys[$mode]['intro-msg'] ) ) { |
| 130 | + $wgOut->addWikiMsg( $wgPrefSwitchSurveys[$mode]['intro-msg'] ); |
| 131 | + } |
| 132 | + |
| 133 | + // Setup a form |
| 134 | + $html = Xml::openElement( |
| 135 | + 'form', array( |
| 136 | + 'method' => 'post', |
| 137 | + 'action' => $this->getTitle()->getLinkURL( $query ), |
| 138 | + 'class' => 'simple-survey', |
| 139 | + 'id' => "simple-survey-{$mode}" |
| 140 | + ) |
| 141 | + ); |
| 142 | + $html .= Xml::hidden( 'survey', $mode ); |
| 143 | + $html .= Xml::hidden( 'token', $this->tokenToCheck ); |
| 144 | + // Render a survey |
| 145 | + $html .= SimpleSurvey::render( |
| 146 | + $wgPrefSwitchSurveys[$mode]['questions'] |
| 147 | + ); |
| 148 | + // Finish out the form |
| 149 | + $html .= Xml::openElement( 'dt', array( 'class' => 'prefswitch-survey-submit' ) ); |
| 150 | + $html .= Xml::submitButton( |
| 151 | + wfMsg( $wgPrefSwitchSurveys[$mode]['submit-msg'] ), |
| 152 | + array( 'id' => "simple-survey-submit-{$mode}", 'class' => 'prefswitch-survey-submit' ) |
| 153 | + ); |
| 154 | + $html .= Xml::closeElement( 'dt' ); |
| 155 | + $html .= Xml::closeElement( 'form' ); |
| 156 | + return $html; |
| 157 | + } |
| 158 | +} |
Property changes on: branches/wmf/1.16wmf4/extensions/SimpleSurvey/SpecialSimpleSurvey.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 159 | + native |