modified: c/CtrlCheckLinks.rb

new file:   c/CtrlHistoLink.rb
	modified:   c/Main.rb
	modified:   fichier/haut.html
	deleted:    groupe3.html
	modified:   m/ReadFile.rb
	deleted:    m/ReadFolder.rb
	new file:   sauv/aa
	new file:   sauv/ff
	modified:   v/Vue1.rb
	new file:   v/VueHisto.rb
	new file:   v/VueMenu.rb
	modified:   v/VueResult.rb
This commit is contained in:
Quentin 2014-01-17 02:37:20 +01:00
parent e3cd387365
commit 7df4c9c289
13 changed files with 289 additions and 1971 deletions

View File

@ -1,22 +1,23 @@
# Controleur de la vérification de la validité des liens ainsi que les vues correspondantes
class CtrlCheckLinks
def saisie
liste_dir = "../fichier/".liste_rep
#Va checher les fichiers et arborecenses dans le dossier fichier (Méthode dans ReadFolder)
Gtk.init
@v1 = Vue1.new(liste_dir, self)
@v1.getWindow.show_all
#Controleur de la saisie pour vérification de lien
def saisie(type)
@v1 = Vue1.new(self, 'Saisie nom fichier', type) #creation vue principal
@v1.getWindow.show_all # affichage
Gtk.main
return @urls
end
def recupUrls(str)
#Controleur recuperation et verification de liens dans 1 fichiers
def recupUrls(str)
f = ReadFile.new(str)
@urls = f.getUrls
self.vueResult(self.verifLiens(@urls), str)
s = CtrlHistoLink.new #on enregistre dans l'histo le verif du lien
s.sauv(str, @urls)
return @urls
end
def recupUrlsDoss(str)
#Controleur recuperation et verification de liens dans 1 dossier
def recupUrlsDoss(str)
d = Dir.open(str)
liste_exclus = [".", ".."]
liste_dir = d.sort - liste_exclus
@ -24,18 +25,18 @@ class CtrlCheckLinks
if (File.ftype(str + "/" + fichier) == "file")
self.recupUrls(str + "/" + fichier)
end
}
}
end
def destructionFen
#Controleur permettant de detruire la vue principal
def destructionFen
@v1.getWindow.destroy
Gtk.main_quit
end
def verifLiens(urls)
resultats = ""
urls.each { |n|
p = Net::Ping::HTTP.new n , 80
#Controleur de verification de liens
def verifLiens(urls)
resultats = ""
urls.each { |n| # pour chaque urls on realise un ping -> mise des resultats en chaine de caractere
p = Net::Ping::HTTP.new n , 80, 5
if p.ping?
resultats += "#{n} est vivant\n"
else
@ -43,16 +44,13 @@ class CtrlCheckLinks
end
}
return resultats
end
def vueResult(resultats, nom)
#Controleur permettant d'afficher la vue secondaire d'affichage de resultat
def vueResult(resultats, nom)
v = VueResult.new(resultats, nom)
v.getWindow.show_all
Gtk.main
end
end

30
c/CtrlHistoLink.rb Normal file
View File

@ -0,0 +1,30 @@
#Classe permettant de g"rer l'historique de fichier traité
class CtrlHistoLink
#Saisie pour vérification de lien stocké en historique
def saisie
@v = VueHisto.new(self,"Historique") #creation vue
@v.getWindow.show_all # affichage
Gtk.main
return @urls
end
#Sauvegarde les liens dans un fichier pour historique
def sauv(fileName, urls)
fileName = File.basename(fileName)
f = File.new("../sauv/#{fileName}", "w+")
f.write(urls)
f.close
end
#Permet de rejouer les liens d'un fichier
def rejouer(fileName)
r = CtrlCheckLinks.new
@urls = r.recupUrls(fileName)
end
#Controleur permettant de detruire la vue historique
def destructionFen
@v.getWindow.destroy
Gtk.main_quit
end
end

View File

@ -6,15 +6,50 @@ require 'net/ping' #lib netwotk
#include
require './CtrlCheckLinks'
require './CtrlHistoLink'
require '../m/ReadFile'
require '../m/ReadFolder'
require '../v/Vue1'
require '../v/VueResult'
require '../v/VueMenu'
require '../v/VueHisto'
c = CtrlCheckLinks.new
urls = c.saisie
while urls!=nil
c = CtrlCheckLinks.new
urls = c.saisie
#Classe principal du controleur main
class Main
# Controleur du menu de départ
def menu
@v = VueMenu.new(self,"Menu")
@v.getWindow.show_all # affichage
Gtk.main
end
# Controleur historique
def histo
c = CtrlHistoLink.new
urls = c.saisie
end
# Controleur vérification d'un fichier
def newVerifFile
c = CtrlCheckLinks.new
urls = c.saisie(1)
end
# Controleur vérification d'un dossier
def newVerifDossier
c = CtrlCheckLinks.new
urls = c.saisie(0)
end
# Controleur permettant de detruire la vue menu
def destructionMenu
@v.getWindow.destroy
Gtk.main_quit
end
end
c = Main.new
c.menu
print "Termine\n"

View File

@ -13,9 +13,9 @@
</div>
<div id="menu">
<ul>
<li><a href="http://index.php">Accueil</a></li>
<li><a href="http://consultprod.php">Consultation des promotions et nouveautés</a></li>
<li><a href="http://consultcat.php">Consultation des produits par catégorie</a></li>
<li><a href="http://recherche.php">Recherche dun produit à commander (client nouveau)</a></ul>
<li><a href="http://google.fr">Accueil</a></li>
<li><a href="http://cdz.dqz">Consultation des promotions et nouveautés</a></li>
<li><a href="https://google.com">Consultation des produits par catégorie</a></li>
<li><a href="http://a.d">Recherche dun produit à commander (client nouveau)</a></ul>
</div>
<div id="contenu">

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,18 @@
#Classe permettant l'acces et la recuperation des données dans les fichiers
class ReadFile
def initialize(pFic)
#Ouverture d'un fichier en lecture
def initialize(pFic)
@fic = File.open(pFic, "r")
end
def getALL #revoit tout le contenu d'un fichier sous forme d'une chaine de caractere
#Revoit tout le contenu d'un fichier sous forme d'une chaine de caractere
def getALL
all = @fic.read
return all
end
def getUrls #sort les URLs d'un fichier
#Sort les URLs d'un fichier
def getUrls
txt = self.getALL
url = txt.scan(/http[^\s]*/)
url = URI::extract(txt, /http(s)?/)
return url
end
end

View File

@ -1,33 +0,0 @@
class String #ajout de la méthode à la classe String
def liste_rep(espacement = "")
#initialisation
i=0
fich_dir = [""]
all_dir = ""
liste_exclus = [".", ".."]
d = Dir.open(self)
#sort les fichiers sans . et .. qui nous interresse pas
liste_dir = d.sort - liste_exclus
liste_dir.each { |fichier| #pour chaque fichier touvé
case File.ftype(self+fichier)
when "directory" #si on trouve un dossier on l'ajoute et on cherche son contenu avec un apelle recursif
fich_dir[i] = "#{espacement} + #{fichier}/ \n"
espacement += " "
fich_dir[i+1] = (self + fichier + "/").liste_rep(espacement)
espacement = espacement[0, espacement.length-4]
i+=2
when "file" # si c'est un fichier on l'ajoute simplement
fich_dir[i] = "#{espacement} - #{fichier} \n"
i+=1
end
}
fich_dir.each { |n|
all_dir += n
}
return all_dir; #return l'arboressence des fichiers sous forme d'une chaine de caractere
end
end

1
sauv/aa Normal file
View File

@ -0,0 +1 @@
[]

1
sauv/ff Normal file
View File

@ -0,0 +1 @@
["https://www.google.fr", "http://www.ndqjkdjqdkjz.com", "http://www.a.com"]

View File

@ -1,33 +1,28 @@
# Classe creation de la vue de sélection de fichier ou dossier
class Vue1
def initialize(liste_dir, ctrl)
# Creation de la vue
def initialize(ctrl, title, type)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title('Saisie nom fichier')
@window.set_title(title)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
top = Gtk::HBox.new(false, 6)
bot = Gtk::HBox.new(false, 6)
###Partie supérieur fenetre###
#Creation du label de l'arbo
dir = Gtk::Label.new(liste_dir)
top.pack_start(dir, false, true, 6)
vb.pack_start(top)
##############################
###Partie Inferieur fenetre###
#creation label pour la saisie
lab = Gtk::Label.new('Chemin')
lab = Gtk::Label.new('Chemin :')
bot.pack_start(lab, false, true, 6)
#creation champ de saisie
@nom = Gtk::Entry.new
#@nom = Gtk::Entry.new
if (type == 1)
@nom = Gtk::FileChooserButton.new("choisir un fichier", Gtk::FileChooser::ACTION_OPEN)
else
@nom = Gtk::FileChooserButton.new("choisir un dossier ", Gtk::FileChooser::ACTION_SELECT_FOLDER)
end
@nom.set_current_folder("../fichier")
bot.pack_start(@nom, true, true)
#creation bouton de validation
@ -43,25 +38,27 @@ class Vue1
self.listenerDestroy
end
def getWindow
def getWindow #:nodoc:#
return @window
end
def getEntry
def getEntry #:nodoc:#
return @chaine
end
def listenerDestroy # Listener fermeture fenetre
@window.signal_connect('delete_event') {
@ctrl.destructionFen
# Listener fermeture fenetre
def listenerDestroy
@window.signal_connect('destroy') {
@ctrl.destructionFen
}
end
def listenerBouton #listener appuie validation
#Listener appuie bouton validation
def listenerBouton
@chaine = " "
@b.signal_connect('clicked'){
@chaine = @nom.text.to_s
if (@chaine =="")
@chaine = @nom.filename
if (@chaine =="") #gestion saisie vide
m = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
@ -69,16 +66,12 @@ class Vue1
m.run
m.destroy
else
@chaine = "../fichier/" + @chaine
if(File.directory?(@chaine))
if(File.directory?(@chaine)) #si c'est un dossier utilisation du controleur adéquat
@ctrl.recupUrlsDoss(@chaine)
else
if(File.exist?(@chaine))
if(File.exist?(@chaine)) #si c'est un fichier existant utilisation du controleur adéquat
@ctrl.recupUrls(@chaine)
else
else #gestion saisie invalide
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,

78
v/VueHisto.rb Normal file
View File

@ -0,0 +1,78 @@
# Classe creation de la vue permettant d'aceder a l'historique
class VueHisto
# Creation de la vue
def initialize(ctrl, title)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title(title)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
bot = Gtk::HBox.new(false, 6)
#creation label pour la saisie
lab = Gtk::Label.new('Chemin du fichier a rejouer :')
bot.pack_start(lab, false, true, 6)
#creation champ de saisie
@nom = Gtk::FileChooserButton.new("choisir un fichier", Gtk::FileChooser::ACTION_OPEN)
@nom.set_current_folder("../sauv")
bot.pack_start(@nom, true, true)
#creation bouton de validation
@b = Gtk::Button.new('OK')
bot.pack_start(@b)
vb.pack_start(bot)
##############################
@window.add(vb)
# Abbonement fenetre au Listener
self.listenerBouton
self.listenerDestroy
end
def getWindow #:nodoc:#
return @window
end
def getEntry #:nodoc:#
return @chaine
end
# Listener fermeture fenetre
def listenerDestroy
@window.signal_connect('destroy') {
@ctrl.destructionFen
}
end
#Listener appuie bouton validation
def listenerBouton
@chaine = " "
@b.signal_connect('clicked'){
@chaine = @nom.filename
if (@chaine =="") #gestion saisie vide
m = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : Veuillez saisir un fichier !")
m.run
m.destroy
else
if(File.exist?(@chaine)) #si c'est un fichier existant utilisation du controleur adéquat
@ctrl.rejouer(@chaine)
else #gestion saisie invalide
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : Fichier inexistant !")
d.run
d.destroy
end
end
}
end
end

66
v/VueMenu.rb Normal file
View File

@ -0,0 +1,66 @@
#Classe creation vue du menu
class VueMenu
# Creation de la vue
def initialize(ctrl, title)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title(title)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
top = Gtk::HBox.new(false, 6)
#creation boutons
@newFile = Gtk::Button.new('Nouveau test fichier')
@newDoss = Gtk::Button.new('Nouveau test dossier')
@histo = Gtk::Button.new('Histo')
top.pack_start(@newFile)
top.pack_start(@newDoss)
top.pack_start(@histo)
vb.pack_start(top)
##############################
@window.add(vb)
# Abbonement fenetre au Listener
self.listenerBoutonNewFile
self.listenerBoutonNewDossier
self.listenerBoutonHisto
self.listenerDestroy
end
def getWindow #:nodoc:#
return @window
end
#Listener appuie bouton nouvelle vérification de 1 fichier
def listenerBoutonNewFile
@newFile.signal_connect('clicked'){
@ctrl.newVerifFile
}
end
#Listener appuie bouton validation nouvelle vérification de 1 dossier
def listenerBoutonNewDossier
@newDoss.signal_connect('clicked'){
@ctrl.newVerifDossier
}
end
#Listener appuie bouton validation pour rejouer un fichier dans de l'historique
def listenerBoutonHisto
@histo.signal_connect('clicke d'){
@ctrl.histo
}
end
# Listener fermeture fenetre Menu
def listenerDestroy
@window.signal_connect('destroy') {
@ctrl.destructionMenu
}
end
end

View File

@ -1,11 +1,16 @@
# Classe creation de la vue des resultats
class VueResult
# Creation de la vue
def initialize(liste_result, nom)
#fenenetre generale
@window = Gtk::Window.new
@window.set_title(nom)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
vh = Gtk::HBox.new(false, 6)
#creation label resultat
if(liste_result != "")
res = Gtk::Label.new(liste_result)
else
@ -14,18 +19,20 @@
vh.pack_start(res, false, true, 6)
vb.pack_start(vh)
# Abbonement fenetre au Listener
@window.add(vb)
self.listenerDestroy
end
def getWindow
def getWindow #:nodoc:#
return @window
end
def listenerDestroy
# Listener fermeture Resultat
def listenerDestroy
@window.signal_connect('destroy') {
@window.destroy
Gtk.main_quit
@window.destroy
Gtk.main_quit
}
end
end