ÿØÿà JFIF    ÿÛ „  ( %!1"%)+...383-7(-.+  -%%--------+------------/----------------------------ÿÀ  ¶" ÿÄ     ÿÄ @    !1AQaq‘¡"±ÁÑð2’BRráS‚ñ3b¢CT²Ò #cÿÄ    ÿÄ '   1!AQ2a"‘±#ÿÚ   ? ò(/p‘—–¢·,M|¯G»R£üešT. ôŸEoCFñ‡ 4ÔkåóxR|µÁ¨ÓDà!Ç´µ˜‡p ÍQ‹§!þž^õWsŒy  åÁ§$á«%ºq˜™JyyË0y«^Ϗ -3ÃÏËÈ£Æ\P’ä„s&•‹Üs üô'àWt¹pñCp$bÚF`·7.^)¾!)ÒÙ˜–ÅÏš^h¾ø³·ìe±ŒaeÖ—Í,e=B}Jéߦ$$½—šÙÜCC¯¶è8β–Åkèwx LÉngT±æ¹£Ócœ¿Í/©Éÿ ‰ÚCÒ­mq;Tt¶–}0"zÖPcd1š­¤tˆ„ÐÓâqú[™öUCŠ2޿د­É(¸ßúçšmW,Ò ºf‹Ån™ÄLêÁ8üÁkÁ€L¥ÍuJ1œôrÂSŒÓöt!7EUíïb)AËi¬â-ÙHk8òÁiXYwÅ)O^"ÇØriÛô{»wRUKÙÏÚlÓ¬€‚’שT ] ªb—ÊîKC^×M“xùäñz¬zJ× {4[¹M'IÆeH1LCWÕ]œûº WDæà°OÅ‚¹c²ÞuA–rL`HšpCez‡V’— Ž‚Ë„–ñ­'µR0ÕÖ=À:±G»C\nÆÉ5*¢ †3šhQ4ýÒi$Õ1"Ü]¢p-q3zcQ$ªö¨¥æf›‘»´ÝÚHá„e²JÇ–iÊ:·à¬Øc5Åk»Laª*wi [0Ówk ¦a¦0Õ²ÅÅ‚T¸’³q:Æ<¹ú Ò˜Æ}2VE•Ѐp¡Ô3Úº …h³^LJºçì¥Ánó|˜ÖˆÎˆ+« ¦dø‘Mº–d\ªDðÛ„Ì×LÝ——Ð9Ç|•FèçVm™¨€™3õS–9Äå¢<̉Ìm¢±`·º˜&Z²ž Ë®D«¶»6™‰©­HÈ Àá«h­i³04æ’hxœi3ï¨(ÓL·†‹¶ËpŒ ƒÜÒ? :õdsÀ –3æÓ·Üjâ¬9—]8n¼&]I F£¼…ì–—Œ0v°LǐÅfÛ2TÖ’aµ˜N@ÖBSÏ^à´4-±°b×nÈÈœÆD=KdŒø…ÄÈK,›ÖR§fjü$^ÔÎ!„6^ s:Üun\ôkCÞò÷<—Lúl Í›G¹ÀPá¼Nc¡šÒ…ÙWͳœ±vÊáЄ×9‹P‰cEØ‘™›µŸP<×g1 º©Ø¬wiÁ^l5× I/';Ë+´Z‡ÓÄFÕp[Èð’ HÄ ó 9¬Dl4“é±Ï”V=^Hð;žLädÉa‚°Ë,#/Ž~²BÔÛ QãñQtIeórVB,ÏÂf‹4#Μc‹É3ZIÖ Œ¢¥·üxa‡Ãçè„jŠ[5 Ä!U?,3žÎ×…ðdÓ÷háŠA‰ìÄ4÷ÃÜZÃE{‰®+W\ZÍE[‰»µk»MÝ­`¢©†˜ÃV‹-f¢¡†¢a«eŠ%«Y¨©q%jâd,Ôq`) ¤¦…šˆ ¦E>0Ùb²t–Ÿ  ÷jsςҒKÈcø(é›;k(’#ôŒQ ™C> õ³M9óºÆµ¤çâ;uÀ)5>RÔ¸fÓ~Ȧ—’-$fe«"FâUˆÊwµPÏu w+"åÉó¨6s™Û9(À¨ù©hE°½†n`m~“@©›p!Vkhµ Á1šbEqqÊ@ºèl›2 –Yã%‘‚hÛ{a¶‡ÅÞM²¬çL34®Çl]®‹ŽØŒm'RÜe35æöˆ­Á­ cP9šeÁköo´L³Ì=p8]”‡B¶,šº|ɏdzXˆØk*ÇÚ{#ñ‰pã(€¶‡9ý'šÜ³½¯kƒ†Â’ëSOƒ•Å®H6+a¢µˆ‹Y¨b˜b+XˆÖ!°u!¢"µˆˆn2ˆ Å0Ä`Å Ô®c(ÓÜGº•Ä»Œ âWî%q.áÐÄ÷î%umÍ£+ÜQ,Vn¦-GphU¸¢X­&,Gt ·K¢ÅÅ·¥RÄÊÉbKn N­R2g$VµÕó Qr#–ÓZUÏð0ÎtÙÀœz ëöo“Îk¯n„T°"SÞ+³/…€½"ižãO%Í%&Δâ‘ËØ´IˆÓ°Ë‰ÞM3.™yçÁzit›`4C`k¢¼á!álÄï sÂ[×!¤l¾æo"ƒIÔ'@ªu)3›ô®“@Z à¾] üœ'‡4¸PÞkÁ-qÄH‰ÓÍBd´ÿ —¹°ÄA&ÊUC„öz‚‚RæŠtf¬>˜ÑidšEçÑL÷áý¡V±h§­c¿¥¨ƒ@g¼…Ýö^ÞËc.ž„æ“I[ ª+·zÐÒÚ,½Ð»¶€C›7jk$๖€Ž¾ÅÙpp¶ÍþéΤ ½ØÎŒq ñpæžÅ¥#Øâ49ÃÂK^MYV“,¶Éz_òæ:…;Õ«¦I3âJ£¤û5$7Èxün\â]Êe¯(Ÿ&Ž‹¶2<6Ćf× æ¢ƱqWı[(ÙÂŽç‚T7¨@ÈÉÍß‚ïÙ"&3TYlGށ†)†#5ŠA©^T2ÆÁ†)©†©†¤yGXÁ†©"†)©¼ÅV WS†#©]R–r‹q5ÕbâWþBh¯u+ªÅÄ×ü„nÑ^êkªÁj‰jeœWˆÕÕ`µDµ2Ì+Ä µDµµ5Ô{¤Þ0RF’H÷AÛ<ÊÁ§ ƈæ0Ñ£ê4 öÚµ[¬/1²€â<-¬šö²r×0o×w ´xÐÒË„ g01¬„åEM蛇Ã\6µE›‘fÙO k÷CºnÓ1`iîÒ² áÂ!ÑLÄÿ ³¬\õ*:M=Ç»c‹2[‰ØsÕLò\ŒK L^™üÄN\¶#» Ç\……ßïIœÉ$¸ÎñÍ®ÔHÇ Ûí/´>Li”„†g^$ 7NÍÑÑ2M2ªNg=k½Ð}Ÿl6‡ —JWˆ”ÞéT·+µ¦üÂFè¢Vs6ýÆ4»2+2IÝ9ô9®ÇGÙÇ1+Ä8;*Õ§ž½D*îÑWÚçá3Ma¤·ˆ¥t}š²Ü…Q+Æüµ8HíS”üxGéÁˆ¦Ël„éÈ 5 µÄƒ6äÜ(kIš¯S†fÖ&¸®×v|Äyˆ*禌Éù@7-®Ä[]ÎÖ¿ê`º…=:…žJVnݳvðÖKE¼‚ »mà ÷f®:Ë ™–4rð¡4` ܹçž~‹C=œ…¾Ïj|VDtK.ƒ"9 Ï ­–éXá³6WÒïIL-Ї Ç default.scss000064400000006634152266376540007116 0ustar00// // Bootstrap variables // // Prefix for all CSS variables $prefix: bs- !default; // Colors $white: #fff !default; $gray-100: #f8f9fa !default; $gray-200: #e9ecef !default; $gray-300: #dee2e6 !default; $gray-400: #ced4da !default; $gray-500: #8f959e !default; $gray-600: #6a737b !default; $gray-700: #495057 !default; $gray-800: #343a40 !default; $gray-900: #1d2125 !default; $black: #000 !default; $blue: #0f6cbf !default; $indigo: #6610f2 !default; $purple: #613d7c !default; $pink: #db1a74 !default; $red: #ca3120 !default; $orange: #ff7518 !default; $yellow: #f0ad4e !default; $green: #357a32 !default; $teal: #20c997 !default; $cyan: #008196 !default; $primary: $blue !default; $secondary: $gray-400 !default; $success: $green !default; $info: $cyan !default; $warning: $yellow !default; $danger: $red !default; $light: $gray-100 !default; $dark: $gray-900 !default; // stylelint-disable $theme-colors: () !default; $theme-colors: map-merge(( "primary": $primary, "secondary": $secondary, "success": $success, "info": $info, "warning": $warning, "danger": $danger, "light": $light, "dark": $dark ), $theme-colors); // stylelint-enable // Fonts $font-size-base: 0.9375rem !default; $headings-font-weight: 300 !default; // Links $link-decoration: none !default; $link-hover-decoration: underline !default; // Navbar $navbar-dark-hover-color: rgba($white, 1) !default; $navbar-light-color: rgba($black, 0.6) !default; $navbar-light-hover-color: rgba($black, .9) !default; // Breadcrumbs $breadcrumb-padding-y: .5rem !default; $breadcrumb-margin-bottom: 0 !default; // Tables $table-striped-bg-factor: .03 !default; // Cards $card-group-margin: .25rem; // Inputs $focus-ring-opacity: .75 !default; $input-border-color: $gray-500 !default; $form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}gray-500) !default; // Dropdowns $dropdown-link-hover-color: $white; $dropdown-link-hover-bg: $primary; // Popovers $popover-max-width: 300px !default; // Spacers $spacer: 1rem !default; $spacers: ( 0: 0, 1: ($spacer * .25), 2: ($spacer * .5), 3: $spacer, 4: ($spacer * 1.5), 5: ($spacer * 2), 6: ($spacer * 3) ) !default; // Behat site specific variable values. $behatsite: false !default; $enable-transitions: not $behatsite !default; $enable-smooth-scroll: not $behatsite !default; // Import FontAwesome. @import "fontawesome"; // Import All of Bootstrap @import "bootstrap"; // Import Core moodle CSS @import "moodle"; // // Preset CSS // body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .navbar { box-shadow: 0 2px 4px rgba(0, 0, 0, .08); } // Rounded user pictures .userpicture { border-radius: 50%; } .block { background-color: $gray-100; } #page-my-index { background-color: $white; } // Reset the default styling back to the bootstrap defaults for // the secondary outline button because gray-200 is much too light // for an outline button. $info-outline: #1f7e9a; $warning-outline: #a6670e; .btn-outline-secondary { @include button-outline-variant($gray-600); border-color: $gray-600; } .btn-outline-info { @include button-outline-variant($info-outline); } .btn-outline-warning { @include button-outline-variant($warning-outline); } plain.scss000064400000000213152266376540006560 0ustar00// Import FontAwesome. @import "fontawesome"; // Import All of Bootstrap @import "bootstrap"; // Import Core moodle CSS @import "moodle";imagegallery/lang/en/datapreset_imagegallery.php000064400000002301152267112610016117 0ustar00. /** * Strings for component 'datapreset_imagegallery', language 'en', branch 'MOODLE_20_STABLE' * * @package datapreset_imagegallery * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $string['modulename'] = 'Image gallery'; $string['modulename_help'] = 'Use this preset to collect images.'; $string['pluginname'] = 'Image gallery'; $string['privacy:metadata'] = 'The Image gallery plugin does not store any personal data.'; imagegallery/rsstitletemplate.html000064400000000012152267112610013475 0ustar00[[title]] imagegallery/version.php000064400000002250152267112610011406 0ustar00. /** * @package datapreset * @subpackage imagegallery * @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); $plugin->version = 2025041400; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2025040800; // Requires this Moodle version. $plugin->component = 'datapreset_imagegallery'; // Full name of the plugin (used for diagnostics) imagegallery/listtemplate.html000064400000001324152267112610012606 0ustar00
[[image]]
[[title]]
imagegallery/classes/privacy/provider.php000064400000003024152267112610014665 0ustar00. /** * Privacy provider implementation for datapreset_imagegallery. * * @package datapreset_imagegallery * @copyright 2018 Mihail Geshoski * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace datapreset_imagegallery\privacy; defined('MOODLE_INTERNAL') || die(); /** * Privacy provider implementation for datapreset_imagegallery. * * @copyright 2018 Mihail Geshoski * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class provider implements \core_privacy\local\metadata\null_provider { /** * Get the language string identifier with the component's language * file to explain why this plugin stores no data. * * @return string */ public static function get_reason(): string { return 'privacy:metadata'; } } imagegallery/singletemplate.html000064400000002247152267112610013121 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##actionsmenu##
##approvalstatus##

[[title]]

[[description]]
[[image]]
##otherfields##
imagegallery/csstemplate.css000064400000001011152267112610012240 0ustar00/****** List View CSS ******/ #imagegallery-list img.list_picture { width: 100%; height: 15vw; object-fit: cover; } #imagegallery-list .card { margin-top: 30px; margin-bottom: 15px; } .imagegallery-listentry .card-title { font-size: larger; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } /***** Single View CSS *****/ .imagegallery-single-body .col { padding: 10px 15px; } .imagegallery-single img.list_picture { max-width: 100%; height: auto; } imagegallery/preset.xml000064400000001461152267112610011237 0ustar00 0 0 3 0 0 0 0 0 0 0 0 0 0 picture image 2097152 text title textarea description 0 60 10 1 0 imagegallery/listtemplatefooter.html000064400000000007152267112610014022 0ustar00 imagegallery/listtemplateheader.html000064400000000152152267112610013755 0ustar00
imagegallery/jstemplate.js000064400000000000152267112610011705 0ustar00imagegallery/tests/behat/imagegallery_preset.feature000064400000013774152267112610017053 0ustar00@mod @mod_data @datapreset @data_preset_imagegallery Feature: Users can use the Image gallery preset In order to create an Image gallery database As a user I need to apply and use the Image gallery preset Background: Given the following "users" exist: | username | firstname | lastname | email | | student1 | Alice | Student | student1@example.com | | teacher1 | Pau | Teacher | teacher1@example.com | And the following "courses" exist: | fullname | shortname | category | | Course 1 | C1 | 0 | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: | activity | name | intro | course | idnumber | | data | Mountain landscapes | Database intro | C1 | data1 | And I am on the "Mountain landscapes" "data activity" page logged in as teacher1 And I follow "Presets" And I click on "fullname" "radio" in the "Image gallery" "table_row" And I click on "Use this preset" "button" And the following "mod_data > entries" exist: | database | user | title | description | image | | data1 | student1 | First image | This is the description text for image 1 | first.png | | data1 | teacher1 | Second image | And this is the description text for image 2 | second.png | @javascript Scenario: Users view entries When I am on the "Mountain landscapes" "data activity" page logged in as student1 Then I should see "First image" And I should not see "This is the description text for image 1" And I should not see "first.png" And I should not see "Alice Student" in the "#imagegallery-list" "css_element" And "//a/child::img[contains(@src, 'first.png')]" "xpath_element" should exist And "Actions" "button" should exist in the "#imagegallery-list" "css_element" And I should see "Second image" And I should not see "And this is the description text for image 2" And I should not see "second.png" And I should not see "Pau Teacher" And "//a/child::img[contains(@src, 'second.png')]" "xpath_element" should exist # Single view. And I select "Single view" from the "jump" singleselect And I should see "First image" And I should see "Alice Student" in the ".imagegallery-single" "css_element" And I should see "This is the description text for image 1" And "//a/child::img[contains(@src, 'first.png')]" "xpath_element" should exist And "Actions" "button" should exist in the ".imagegallery-single" "css_element" And I should not see "Second image" And I should not see "And this is the description text for image 2" And I should not see "Pau Teacher" And "//a/child::img[contains(@src, 'second.png')]" "xpath_element" should not exist And I follow "Next" And I should see "Second image" And I should see "Pau Teacher" And I should see "And this is the description text for image 2" And "//a/child::img[contains(@src, 'second.png')]" "xpath_element" should exist # This student can't edit or delete this entry, so the Actions menu shouldn't be displayed. And "Actions" "button" should not exist in the ".imagegallery-single" "css_element" And I should not see "First image" And I should not see "Alice Student" in the ".imagegallery-single" "css_element" And I should not see "This is the description text for image 1" And "//a/child::img[contains(@src, 'first.png')]" "xpath_element" should not exist @javascript Scenario: Users can search entries Given I am on the "Mountain landscapes" "data activity" page logged in as student1 And "First image" "text" should appear before "Second image" "text" When I click on "Advanced search" "checkbox" And I should see "First name" And I should see "Last name" And I set the field "title" to "First image" And I click on "Save settings" "button" in the "data_adv_form" "region" Then I should see "First image" And I should not see "Second image" But I set the field "title" to "image" And I set the field "Order" to "Descending" And I click on "Save settings" "button" in the "data_adv_form" "region" And "Second image" "text" should appear before "First image" "text" @javascript Scenario: Users can add entries Given I am on the "Mountain landscapes" "data activity" page logged in as student1 When I press "Add entry" And I set the field "title" to "New image" And I set the field "description" to "This is the description for the new image." And I press "Save" Then I should see "New image" And I should see "This is the description for the new image." @javascript Scenario: Image gallery. Renaming a field should affect the template Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1 And I navigate to "Fields" in current page administration And I open the action menu in "title" "table_row" And I choose "Edit" in the open action menu And I set the field "Field name" to "Edited field name" And I press "Save" And I should see "Field updated" When I navigate to "Database" in current page administration Then I click on "Advanced search" "checkbox" And I should see "Edited field name" And I click on "Add entry" "button" And I should see "Edited field name" @javascript Scenario: Image gallery. Has otherfields tag Given the following "mod_data > fields" exist: | database | type | name | description | | data1 | text | Extra field | Test field description | And I am on the "Mountain landscapes" "data activity" page logged in as teacher1 When I select "Single view" from the "jump" singleselect Then I should see "Extra field" And I click on "Add entry" "button" And I should see "Extra field" imagegallery/addtemplate.html000064400000000575152267112610012372 0ustar00
[[title#name]]
[[title]]
[[image#name]]
[[image]]
[[description#name]]
[[description]]
##otherfields##
imagegallery/asearchtemplate.html000064400000001203152267112610013235 0ustar00
First name
##firstname##
Last name
##lastname##
[[title#name]]
[[title]]
[[description#name]]
[[description]]
imagegallery/rsstemplate.html000064400000002135152267112610012443 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##approvalstatus##

[[title]]

[[description]]
[[image]]
journal/lang/en/datapreset_journal.php000064400000002231152267112610014141 0ustar00. /** * Strings for component 'datapreset_journal', language 'en'. * * @package datapreset_journal * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $string['modulename'] = 'Journal'; $string['modulename_help'] = 'Use this preset for a journal, diary, reflections tool or research log.'; $string['pluginname'] = 'Journal'; $string['privacy:metadata'] = 'The Journal plugin doesn\'t store any personal data.'; journal/rsstitletemplate.html000064400000000012152267112610012505 0ustar00[[Title]] journal/version.php000064400000002255152267112610010423 0ustar00. /** * Data Journal preset version information. * * @package datapreset_journal * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); $plugin->version = 2025041400; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2025040800; // Requires this Moodle version. $plugin->component = 'datapreset_journal'; // Full name of the plugin (used for diagnostics). journal/listtemplate.html000064400000002205152267112610011615 0ustar00
##actionsmenu##
##approvalstatus##
[[Content]]
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
journal/classes/privacy/provider.php000064400000002415152267112610013700 0ustar00. namespace datapreset_journal\privacy; /** * Privacy provider implementation for datapreset_journal. * * @package datapreset_journal * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class provider implements \core_privacy\local\metadata\null_provider { /** * Get the language string identifier with the component's language * file to explain why this plugin stores no data. * * @return string */ public static function get_reason(): string { return 'privacy:metadata'; } } journal/singletemplate.html000064400000002040152267112610012120 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##actionsmenu##
##approvalstatus##

[[title]]

[[Content]]
##otherfields##
journal/csstemplate.css000064400000000244152267112610011257 0ustar00/****** List View CSS ******/ .truncate-overflow { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } journal/preset.xml000064400000001113152267112610010241 0ustar00 0 0 0 0 0 0 1 0 0 text Title 0 textarea Content 0 60 10 1 0 journal/listtemplatefooter.html000064400000000007152267112610013032 0ustar00
journal/listtemplateheader.html000064400000000030152267112610012760 0ustar00
journal/jstemplate.js000064400000000000152267112610010715 0ustar00journal/tests/behat/journal_preset.feature000064400000012155152267112610015063 0ustar00@mod @mod_data @datapreset @datapreset_journal Feature: Users can use the Journal preset In order to create a Journal database As a user I need to apply and use the Journal preset Background: Given the following "users" exist: | username | firstname | lastname | email | | student1 | Alice | Student | student1@example.com | | teacher1 | Pau | Teacher | teacher1@example.com | And the following "courses" exist: | fullname | shortname | category | | Course 1 | C1 | 0 | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: | activity | name | intro | course | idnumber | | data | Student reflections | Database intro | C1 | data1 | And I am on the "Student reflections" "data activity" page logged in as teacher1 And I follow "Presets" And I click on "fullname" "radio" in the "Journal" "table_row" And I click on "Use this preset" "button" And the following "mod_data > entries" exist: | database | user | Title | Content | | data1 | student1 | Reflection created by student | This is the content for the entry 1 | | data1 | teacher1 | Reflection created by teacher | And this is the content for the entry 2 | @javascript Scenario: Journal. Users view entries When I am on the "Student reflections" "data activity" page logged in as student1 Then I should see "Reflection created by student" And I should see "This is the content for the entry 1" And "Actions" "button" should exist in the "#journal-list" "css_element" And I should see "Reflection created by teacher" And I should see "And this is the content for the entry 2" # Single view. And I select "Single view" from the "jump" singleselect And I should see "Reflection created by student" And I should see "This is the content for the entry 1" And "Actions" "button" should exist in the ".journal-single" "css_element" And I should not see "Reflection created by teacher" And I should not see "And this is the content for the entry 2" And I follow "Next" And I should see "Reflection created by teacher" And I should see "And this is the content for the entry 2" # This student can't edit or delete this entry, so the Actions menu shouldn't be displayed. And "Actions" "button" should not exist in the ".journal-single" "css_element" And I should not see "Reflection created by student" And I should not see "This is the content for the entry 1" @javascript Scenario: Journal. Users can search entries Given I am on the "Student reflections" "data activity" page logged in as student1 And "Reflection created by student" "text" should appear before "Reflection created by teacher" "text" When I click on "Advanced search" "checkbox" And I should see "First name" And I should see "Last name" And I set the field "Title" to "student" And I click on "Save settings" "button" in the "data_adv_form" "region" Then I should see "Reflection created by student" And I should not see "Reflection created by teacher" But I set the field "Title" to "Reflection" And I set the field "Order" to "Descending" And I click on "Save settings" "button" in the "data_adv_form" "region" And "Reflection created by teacher" "text" should appear before "Reflection created by student" "text" @javascript Scenario: Journal. Users can add entries Given I am on the "Student reflections" "data activity" page logged in as student1 When I press "Add entry" And I set the field "Title" to "This is the title" And I set the field "Content" to "This is the content for the new entry." And I press "Save" Then I should see "This is the title" And I should see "This is the content for the new entry." @javascript Scenario: Journal. Renaming a field should affect the template Given I am on the "Student reflections" "data activity" page logged in as teacher1 And I navigate to "Fields" in current page administration And I open the action menu in "Content" "table_row" And I choose "Edit" in the open action menu And I set the field "Field name" to "Edited field name" And I press "Save" And I should see "Field updated" When I navigate to "Database" in current page administration Then I click on "Advanced search" "checkbox" And I should see "Edited field name" And I click on "Add entry" "button" And I should see "Edited field name" @javascript Scenario: Journal. Has otherfields tag Given the following "mod_data > fields" exist: | database | type | name | description | | data1 | text | Extra field | Test field description | And I am on the "Student reflections" "data activity" page logged in as teacher1 When I click on "Add entry" "button" Then I should see "Extra field" journal/addtemplate.html000064400000000412152267112610011370 0ustar00
[[Title#name]]
[[Title]]
[[Content#name]]
[[Content]]
##otherfields##
journal/asearchtemplate.html000064400000001132152267112610012246 0ustar00
First name
##firstname##
Last name
##lastname##
[[Title#name]]
[[Title]]
[[Content#name]]
[[Content]]
journal/rsstemplate.html000064400000001726152267112610011460 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##approvalstatus##

[[title]]

[[Content]]
resources/lang/en/datapreset_resources.php000064400000002274152267112610015050 0ustar00. /** * Strings for component 'datapreset_resources', language 'en'. * * @package datapreset_resources * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $string['modulename'] = 'Resources'; $string['modulename_help'] = 'Collect resources such as web links or book reviews in a table, with links to the detailed view.'; $string['pluginname'] = 'Resources'; $string['privacy:metadata'] = 'The Resources plugin does not store any personal data.'; resources/rsstitletemplate.html000064400000000012152267112610013045 0ustar00[[Title]] resources/version.php000064400000002263152267112610010762 0ustar00. /** * Data Resources preset version information. * * @package datapreset_resources * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); $plugin->version = 2025041400; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2025040800; // Requires this Moodle version. $plugin->component = 'datapreset_resources'; // Full name of the plugin (used for diagnostics). resources/listtemplate.html000064400000000512152267112610012154 0ustar00 [[Title]] [[Type]] [[Author]] [[Web link]]
##approvalstatus##
##actionsmenu## resources/classes/privacy/provider.php000064400000002423152267112610014237 0ustar00. namespace datapreset_resources\privacy; /** * Privacy provider implementation for datapreset_resources. * * @package datapreset_resources * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class provider implements \core_privacy\local\metadata\null_provider { /** * Get the language string identifier with the component's language * file to explain why this plugin stores no data. * * @return string */ public static function get_reason(): string { return 'privacy:metadata'; } } resources/singletemplate.html000064400000003715152267112610012472 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##actionsmenu##
##approvalstatus##

[[Title]]

Author of resource
[[Author]]
[[Type#name]]
[[Type]]
Link
[[Web link]]
[[Cover]]

Content

[[Description]]
##otherfields##
resources/csstemplate.css000064400000000157152267112610011622 0ustar00/****** Single View CSS ******/ .resources-single .img-wrapper img { flex-shrink: 0; width: 200px; } resources/preset.xml000064400000001750152267112610010610 0ustar00 0 0 0 0 0 0 1 0 0 text Title 0 text Author 0 picture Cover 0 0 textarea Description 0 60 10 1 0 url Web link 0 1 1 menu Type 0 Type1 Type2 Type3 resources/listtemplatefooter.html000064400000000026152267112610013373 0ustar00 resources/listtemplateheader.html000064400000000641152267112610013330 0ustar00 resources/jstemplate.js000064400000000000152267112610011255 0ustar00resources/tests/behat/resources_preset.feature000064400000013766152267112610015774 0ustar00@mod @mod_data @datapreset @datapreset_resources Feature: Users can use the Resources preset In order to create a Resources database As a user I need to apply and use the Resources preset Background: Given the following "users" exist: | username | firstname | lastname | email | | student1 | Alice | Student | student1@example.com | | teacher1 | Pau | Teacher | teacher1@example.com | And the following "courses" exist: | fullname | shortname | category | | Course 1 | C1 | 0 | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: | activity | name | intro | course | idnumber | | data | Student resources | Database intro | C1 | data1 | And I am on the "Student resources" "data activity" page logged in as teacher1 And I follow "Presets" And I click on "fullname" "radio" in the "Resources" "table_row" And I click on "Use this preset" "button" And the following "mod_data > entries" exist: | database | user | Title | Description | Type | Author | Web link | Cover | | data1 | student1 | My favourite book | Book content | Type1 | The book author | http://myfavouritebook.cat | first.png | | data1 | teacher1 | My favourite podcast | Podcast content| Type2 | The podcast author | http://myfavouritepodcast.cat | second.png | @javascript Scenario: Resources. Users view entries When I am on the "Student resources" "data activity" page logged in as student1 Then I should see "My favourite book" And I should see "Type1" And I should see "The book author" And I should see "http://myfavouritebook.cat" And I should not see "Book content" And "Actions" "button" should exist in the "#resources-list" "css_element" And I should see "My favourite podcast" And I should see "Type2" And I should see "The podcast author" And I should see "http://myfavouritepodcast.cat" And I should not see "Podcast content" # Single view. And I select "Single view" from the "jump" singleselect And I should see "My favourite book" And I should see "Type1" And I should see "The book author" And I should see "http://myfavouritebook.cat" And I should see "Book content" And "Actions" "button" should exist in the ".resources-single" "css_element" And I should not see "My favourite podcast" And I should not see "Type2" And I should not see "The podcast author" And I should not see "http://myfavouritepodcast.cat" And I should not see "Podcast content" And I follow "Next" And I should see "My favourite podcast" And I should see "Type2" And I should see "The podcast author" And I should see "http://myfavouritepodcast.cat" And I should see "Podcast content" # This student can't edit or delete this entry, so the Actions menu shouldn't be displayed. And "Actions" "button" should not exist in the ".resources-single" "css_element" And I should not see "My favourite book" And I should not see "Type1" And I should not see "The book author" And I should not see "http://myfavouritebook.cat" And I should not see "Book content" @javascript Scenario: Resources. Users can search entries Given I am on the "Student resources" "data activity" page logged in as student1 And "My favourite book" "text" should appear before "My favourite podcast" "text" When I click on "Advanced search" "checkbox" And I should see "First name" And I should see "Last name" And I set the field "Title" to "book" And I click on "Save settings" "button" in the "data_adv_form" "region" Then I should see "My favourite book" And I should not see "My favourite podcast" But I set the field "Title" to "favourite" And I set the field "Order" to "Descending" And I click on "Save settings" "button" in the "data_adv_form" "region" And "My favourite podcast" "text" should appear before "My favourite book" "text" @javascript Scenario: Resources. Users can add entries Given I am on the "Student resources" "data activity" page logged in as student1 When I press "Add entry" And I set the field "Title" to "This is the title" And I set the field "Author" to "This is the author" And I set the field "Description" to "This is description." And I set the field "Web link" to "https://thisisthelink.cat" And I set the field "Type" to "Type2" And I press "Save" Then I should see "This is the title" And I should see "This is the author" And I should see "https://thisisthelink.cat" And I should see "Type2" @javascript Scenario: Resources. Renaming a field should affect the template Given I am on the "Student resources" "data activity" page logged in as teacher1 And I navigate to "Fields" in current page administration And I open the action menu in "Type" "table_row" And I choose "Edit" in the open action menu And I set the field "Field name" to "Edited field name" And I press "Save" And I should see "Field updated" When I navigate to "Database" in current page administration Then I click on "Advanced search" "checkbox" And I should see "Edited field name" And I click on "Add entry" "button" And I should see "Edited field name" @javascript Scenario: Resources. Has otherfields tag Given the following "mod_data > fields" exist: | database | type | name | description | | data1 | text | Extra field | Test field description | And I am on the "Student resources" "data activity" page logged in as teacher1 When I select "Single view" from the "jump" singleselect Then I should see "Extra field" And I click on "Add entry" "button" And I should see "Extra field" resources/addtemplate.html000064400000001250152267112610011731 0ustar00
[[Title#name]]
[[Title]]
Author of resource
[[Author]]
[[Cover#name]]
[[Cover]]
Content
[[Description]]
[[Web link#name]]
[[Web link]]
[[Type#name]]
[[Type]]
##otherfields##
resources/asearchtemplate.html000064400000001771152267112610012617 0ustar00
First name
##firstname##
Last name
##lastname##
[[Title#name]]
[[Title]]
Author of resource
[[Author]]
Content
[[Description]]
[[Web link#name]]
[[Web link]]
[[Type#name]]
[[Type]]
resources/rsstemplate.html000064400000003630152267112610012014 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##approvalstatus##

[[Title]]

Author of resource
[[Author]]
[[Type#name]]
[[Type]]
Link
[[Web link]]
[[Cover]]

Content

[[Description]]
proposals/lang/en/datapreset_proposals.php000064400000002352152267112610015065 0ustar00. /** * Strings for component 'datapreset_proposals', language 'en'. * * @package datapreset_proposals * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ $string['modulename'] = 'Proposals'; $string['modulename_help'] = 'Use this preset to collect proposals for topics, research, projects, etc. Fields include status such as approved, declined, revise or pending.'; $string['pluginname'] = 'Proposals'; $string['privacy:metadata'] = 'The Proposals plugin does not store any personal data.'; proposals/rsstitletemplate.html000064400000000012152267112610013055 0ustar00[[Title]] proposals/version.php000064400000002263152267112610010772 0ustar00. /** * Data Proposals preset version information. * * @package datapreset_proposals * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); $plugin->version = 2025041400; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2025040800; // Requires this Moodle version. $plugin->component = 'datapreset_proposals'; // Full name of the plugin (used for diagnostics). proposals/listtemplate.html000064400000002233152267112610012166 0ustar00
proposals/classes/privacy/provider.php000064400000002423152267112610014247 0ustar00. namespace datapreset_proposals\privacy; /** * Privacy provider implementation for datapreset_proposals. * * @package datapreset_proposals * @copyright 2022 Sara Arjona * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class provider implements \core_privacy\local\metadata\null_provider { /** * Get the language string identifier with the component's language * file to explain why this plugin stores no data. * * @return string */ public static function get_reason(): string { return 'privacy:metadata'; } } proposals/singletemplate.html000064400000003016152267112610012474 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##actionsmenu##
##approvalstatus##

[[Title]]

[[Status#name]]

[[Status]]

[[Summary#name]]

[[Summary]]

[[Content#name]]

[[Content]]
##otherfields##
proposals/csstemplate.css000064400000000246152267112610011631 0ustar00/****** List View CSS ******/ #proposals-list .card-header a.d-block { color: black; font-weight: bold; } #proposals-list .card { overflow: visible; } proposals/preset.xml000064400000001437152267112610010622 0ustar00 0 0 0 0 0 0 1 0 0 text Title 0 menu Status 0 Approved In review Rejected Pending text Summary 0 textarea Content 0 60 10 1 0 proposals/listtemplatefooter.html000064400000000007152267112610013402 0ustar00 proposals/listtemplateheader.html000064400000000134152267112610013335 0ustar00
proposals/jstemplate.js000064400000000000152267112610011265 0ustar00proposals/tests/behat/proposals_preset.feature000064400000013674152267112610016012 0ustar00@mod @mod_data @datapreset @datapreset_proposals Feature: Users can use the Proposals preset In order to create a Proposals database As a user I need to apply and use the Proposals preset Background: Given the following "users" exist: | username | firstname | lastname | email | | student1 | Alice | Student | student1@example.com | | teacher1 | Pau | Teacher | teacher1@example.com | And the following "courses" exist: | fullname | shortname | category | | Course 1 | C1 | 0 | And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: | activity | name | intro | course | idnumber | | data | Student projects | Database intro | C1 | data1 | And I am on the "Student projects" "data activity" page logged in as teacher1 And I follow "Presets" And I click on "fullname" "radio" in the "Proposals" "table_row" And I click on "Use this preset" "button" And the following "mod_data > entries" exist: | database | user | Title | Summary | Content | Status | | data1 | student1 | Project created by student | Summary 1 | Content for entry 1 | Pending | | data1 | teacher1 | Project created by teacher | Summary 2 | And content for entry 2 | Rejected | @javascript Scenario: Proposals. Users view entries When I am on the "Student projects" "data activity" page logged in as student1 Then I should see "Project created by student" And "Summary 1" "text" should exist And "Actions" "button" should exist in the "#proposals-list" "css_element" And I should see "Project created by teacher" And "Summary 2" "text" should exist And I click on "Project created by student" "link" And I click on "Project created by teacher" "link" And I should see "Summary 1" And I should not see "Content for entry 1" And I should see "Summary 2" And I should not see "And content for entry 2" # Single view. And I select "Single view" from the "jump" singleselect And I should see "Project created by student" And I should see "Summary 1" And I should see "Content for entry 1" And I should see "Pending" And "Actions" "button" should exist in the ".proposals-single" "css_element" And I should not see "Project created by teacher" And I should not see "Summary 2" And I should not see "And content for entry 2" And I should not see "Rejected" And I follow "Next" And I should see "Project created by teacher" And I should see "Summary 2" And I should see "And content for entry 2" And I should see "Rejected" # This student can't edit or delete this entry, so the Actions menu shouldn't be displayed. And "Actions" "button" should not exist in the ".proposals-single" "css_element" And I should not see "Project created by student" And I should not see "Summary 1" And I should not see "Content for entry 1" And I should not see "Pending" @javascript Scenario: Proposals. Users can search entries Given I am on the "Student projects" "data activity" page logged in as student1 And "Project created by student" "text" should appear before "Project created by teacher" "text" When I click on "Advanced search" "checkbox" And I should see "First name" And I should see "Last name" And I set the field "Title" to "student" And I click on "Save settings" "button" in the "data_adv_form" "region" Then I should see "Project created by student" And I should not see "Project created by teacher" But I set the field "Title" to "Project" And I set the field "Order" to "Descending" And I click on "Save settings" "button" in the "data_adv_form" "region" And "Project created by teacher" "text" should appear before "Project created by student" "text" @javascript Scenario: Proposals. Users can add entries Given I am on the "Student projects" "data activity" page logged in as student1 When I press "Add entry" And I set the field "Title" to "This is the title" And I set the field "Summary" to "This is the summary for the new entry." And I set the field "Content" to "This is the content for the new entry." And I set the field "Status" to "Approved" And I press "Save" Then I should see "This is the title" And I should see "Approved" And I should see "This is the summary for the new entry." And I should see "This is the content for the new entry." @javascript Scenario: Proposals. Renaming a field should affect the template Given I am on the "Student projects" "data activity" page logged in as teacher1 And I navigate to "Fields" in current page administration And I open the action menu in "Summary" "table_row" And I choose "Edit" in the open action menu And I set the field "Field name" to "Edited field name" And I press "Save" And I should see "Field updated" When I navigate to "Database" in current page administration Then I click on "Advanced search" "checkbox" And I should see "Edited field name" And I select "Single view" from the "jump" singleselect And I should see "Edited field name" And I click on "Add entry" "button" And I should see "Edited field name" @javascript Scenario: Proposals. Has otherfields tag Given the following "mod_data > fields" exist: | database | type | name | description | | data1 | text | Extra field | Test field description | And I am on the "Student projects" "data activity" page logged in as teacher1 When I select "Single view" from the "jump" singleselect Then I should see "Extra field" And I click on "Add entry" "button" And I should see "Extra field" proposals/addtemplate.html000064400000000736152267112610011751 0ustar00
[[Title#name]]
[[Title]]
[[Status#name]]
[[Status]]
[[Summary#name]]
[[Summary]]
[[Content#name]]
[[Content]]
##otherfields##
proposals/asearchtemplate.html000064400000001574152267112610012630 0ustar00
First name
##firstname##
Last name
##lastname##
[[Title#name]]
[[Title]]
[[Status#name]]
[[Status]]
[[Summary#name]]
[[Summary]]
[[Content#name]]
[[Content]]
proposals/rsstemplate.html000064400000002661152267112610012027 0ustar00
##userpicture##
##user##
##timeadded##
Last edited: ##timemodified##
##approvalstatus##

[[Title]]

[[Status#name]]
[[Status]]

[[Summary#name]]

[[Summary]]

[[Content#name]]

[[Content]]
Title Type Author of resource Link